How to remove all empty lines from a line

I get the string value from the api, and there are a lot of useless empty strings:

bla bla bla


bla

bla bla bla

I want to remove these empty lines to get this result:

bla bla bla
bla
bla bla bla

How can I continue?

+4
source share
3 answers

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  // ["bla bla bla", "bla", "bla bla bla"]
string.removingAllExtraNewLines  // "bla bla bla\nbla\nbla bla bla"
+10
source

Here is an easy way to do this:

import Foundation

let string = "bla bla bla\n\n\nbla\n\nbla bla bla\n"
var filtered = ""
string.enumerateLines({if !$0.line.isEmpty { filtered.appendContentsOf("\($0.line)\n") }})
print(filtered)
// => bla bla bla
// => bla
// => bla bla bla

:

let newString = string.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()).filter({!$0.isEmpty}).joinWithSeparator("\n")
+4

MuhammadRaheelMateen AtheistP3ace , whitespaceCharacterSet‌ . newlineCharacterSet.

"" ; , , .

, , "", :

let string = blaString.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()).filter(){$0 != ""}.joinWithSeparator("\n")
+2

All Articles