在Swift 2.x中,我能够做到:
let str = "Line 1\nLine 2\r\nLine 3\n"
let newlineChars = NSCharacterSet.newlineCharacterSet()
let lines = str.utf16.split { newlineChars.characterIsMember($0) }.flatMap(String.init)
但是在Swift 3.x中它已经改变了。有人能告诉我如何在Swift 3中使用它吗?
答案 0 :(得分:4)
现在,Swift 3中的这一点有点简单。
let str = "Line 1\nLine 2\r\nLine 3\n"
let newlineChars = NSCharacterSet.newlines
let lines = str.components(separatedBy: newlineChars)
.filter{ !$0.isEmpty }
或只是
let str = "Line 1\nLine 2\r\nLine 3\n"
let lines = str.components(separatedBy: .newlines)
.filter{ !$0.isEmpty }
答案 1 :(得分:2)
@jjatie给出的答案是正确的,但它也会在String
中包含空的Array
元素,您可以使用filter
删除空的String元素。
let str = "Line 1\nLine 2\r\nLine 3\n"
let lines = str.components(separatedBy: .newlines).filter { !$0.isEmpty }
print(lines)