在“Swift 3”中的字符串中查找换行符

时间:2017-06-09 05:48:30

标签: ios xcode swift3

在我的应用中,我收到了一些来自网络服务的传入数据。在该数据中,也可以像新行字符一样接收一些错误的值。我想在响应字符串中找到它是否包含新的行字符。

在Swift 3之前我能够像这样做

string.rangeOfString("\n")) == nil)

但是在 Swift 3 中,此方法已不再可用。但是substring方法可以在Range的帮助下完成。

我想检测我的字符串是否包含"\n"如何在 Swift 3 中使用此方法完成此操作。

6 个答案:

答案 0 :(得分:2)

Swift 5+的简短答案

您可以使用

string.contains { $0.isNewline }

检测字符串是否包含任何换行符。


长答案

Swift 5在Character上引入了几个新属性。这些简化了这样的测试,并且比对\n的简单检查更健壮。

现在您可以使用

myCharacter.isNewline

有关完整列表,请检查Inspecting a Character section in Character docs

示例:

Character("\n").isNewline // true
Character("\r").isNewline // true
Character("a").isNewline  // false

答案 1 :(得分:1)

Swift 3

LocalDate

检查:

OffsetDate

或者,如果您只是想查看string.range(of: "\n") 包含if string.range(of: "\n") == nil{ } ,那么,

string

答案 2 :(得分:1)

如果你只是想知道它是否在那里并且不关心它在哪里,string.contains("\n")如果存在则返回true,否则返回false。

答案 3 :(得分:1)

您也可以使用

yourString.rangeOfCharacter(from: CharacterSet.newlines) != nil

由于它不使用经过编码的换行符字符串,因此更加优雅

答案 4 :(得分:0)

.characters.contains()应该这样做:

let s1 = "Hi I'm a string\n with a new line"
s1.characters.contains("\n")  // => true

let s2 = "I'm not"
s2.characters.contains("\n")  // => false

答案 5 :(得分:0)

let string:String = "This is a string"
if string.range(of: "\n") == nil {
    print  ("contains nil")
}
else {
    print("contains new line")
}

在swift 3中工作。