2016-11-09 13 views
1

In Swift 2.x ich war in der Lage zu tun:Splitting String mit CharacterSet

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) 

Aber in Swift 3.x hat sie sich verändert. Kann mir jemand sagen, wie man das in Swift 3 benutzt?

Antwort

1

Antwort von @jjatie richtig ist, aber es wird auch leer String Elemente in einem Array, können Sie einfach leere String Elemente entfernen filter verwenden.

let str = "Line 1\nLine 2\r\nLine 3\n" 
let lines = str.components(separatedBy: .newlines).filter { !$0.isEmpty } 
print(lines) 
2

Dies ist jetzt in Swift 3 etwas einfacher.

let str = "Line 1\nLine 2\r\nLine 3\n" 
let newlineChars = NSCharacterSet.newlines 
let lines = str.components(separatedBy: newlineChars).filter{ !$0.isEmpty } 

oder einfach

let str = "Line 1\nLine 2\r\nLine 3\n" 
let lines = str.components(separatedBy: .newlines).filter{ !$0.isEmpty }