使用CharacterSet拆分字符串

时间:2016-11-09 11:08:07

标签: swift string swift3

在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中使用它吗?

2 个答案:

答案 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)