I have a string that I got from a text file.
Text file:
Line 1
Line 2
Line 3
...
I want to convert it to an array, one array element p
Swift 5.2 or later
You can split your String using the new Character property isNewline:
let sentence = "Line 1\nLine 2\nLine 3\n"
let lines = sentence.split(whereSeparator: \.isNewline)
print(lines) // "[Line 1, Line 2, Line 3]\n"
You can also extend StringProtocol and create a lines property to return break up the string lines into subsequences:
extension StringProtocol {
var lines: [SubSequence] { split(whereSeparator: \.isNewline) }
}
let sentence = "Line 1\nLine 2\r\nLine 3\n"
for line in sentence.lines {
print(line)
}
let lines = sentence.lines // ["Line 1", "Line 2", "Line 3"]
Original Answer
You can use String method enumerateLines:
Enumerates all the lines in a string.
Swift 3 or later
let sentence = "Line 1\nLine 2\nLine 3\n"
var lines: [String] = []
sentence.enumerateLines { line, _ in
lines.append(line)
}
print(lines) // "[Line 1, Line 2, Line 3]"
extension String {
var lines: [String] {
var result: [String] = []
enumerateLines { line, _ in result.append(line) }
return result
}
}
let sentence2 = "Line 4\nLine 5\nLine 6\n"
let sentence2Lines = sentence2.lines
print(sentence2Lines) // ["Line 4", "Line 5", "Line 6"]
let sentence3 = "Line 7\r\nLine 8\r\nLine 9\r\n"
let sentence3Lines = sentence3.lines
print(sentence3Lines) // "[Line 7, Line 8, Line 9]"