在“Swift 3”中的字符串中查找换行符
Posted
技术标签:
【中文标题】在“Swift 3”中的字符串中查找换行符【英文标题】:Finding new line character in a String in "Swift 3" 【发布时间】:2017-06-09 05:48:30 【问题描述】:在我的应用程序中,我正在接收来自网络服务的一些传入数据。在该数据中,也可能会收到一些错误的值,例如换行符。我想在响应字符串中查找它是否包含换行符。
在 Swift 3 之前我可以这样做
string.rangeOfString("\n")) == nil)
但在 Swift 3 中,此方法不再可用。但是substring
方法是可用的,它在Range
的帮助下完成。
我想检测我的字符串是否包含 "\n"
在 Swift 3 中使用此方法将如何实现。
【问题讨论】:
extension String var lines: [String] var result: [String] = [] enumerateLines line, _ in result.append(line) return result let text = "line1\nline2" let array = text.components(separatedBy: CharacterSet.newlines) 用这个东西。 请检查这个答案***.com/questions/39677330/… @HimanshuMoradiya 当收到错误值时,我收到了一个新的行字符作为整体响应。所以,我只想检测它是否是新行。 然后 text.components(separatedBy: CharacterSet.newlines) 在这你明白了。如果您只想检查新行是否可用,那么请检查 array.count > 0 这意味着新行或部分没有新行 【参考方案1】:如果您只想知道它是否存在而不关心它在哪里,string.contains("\n")
将在它存在时返回 true,如果不存在则返回 false。
【讨论】:
你是对的。它的内置方法非常简单优雅【参考方案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
【讨论】:
【参考方案3】:你也可以使用
yourString.rangeOfCharacter(from: CharacterSet.newlines) != nil
更优雅,因为它不使用硬编码的换行符字符串
【讨论】:
【参考方案4】:斯威夫特 3
string.range(of: "\n")
检查:
if string.range(of: "\n") == nil
或者如果你只是想检查string
是否包含\n
,那么,
if !str.characters.contains("\n")
【讨论】:
【参考方案5】:.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
【讨论】:
【参考方案6】:let string:String = "This is a string"
if string.range(of: "\n") == nil
print ("contains nil")
else
print("contains new line")
在 swift 3 中完美工作。
【讨论】:
以上是关于在“Swift 3”中的字符串中查找换行符的主要内容,如果未能解决你的问题,请参考以下文章