edit / update:
Swift 5 or later
You can use the StringProtocolsplit method func split(maxSplits:, omittingEmptySubsequences:, whereSeparator:) → [SubSequence]and set omittingEmptySubsequences to true and pass the closure as a predicate { $0.isNewline }. Then you just need to use join (separator: "\ n") 'to merge your string again:
let string = "bla bla bla\n\n\nbla\nbla bla bla\n"
let lines = string.split { $0.isNewline }
let result = lines.joined(separator: "\n")
print(result) // "bla bla bla\nbla\nbla bla bla"
Or as an extension StringProtocol:
extension StringProtocol {
var lines: [SubSequence] {
return split { $0.isNewline }
}
var removingAllExtraNewLines: String {
return lines.joined(separator: "\n")
}
}
string.lines
string.removingAllExtraNewLines
source
share