28

I have a string like this:

"

BLA
Blub"

Now I would like to remove all leading line breaks. (But only the ones until the first "real word" appears. How is this possible?

Thanks

jscs
  • 63,095
  • 13
  • 148
  • 192
Christian
  • 6,485
  • 10
  • 49
  • 79

2 Answers2

65

If it is acceptable that newline (and other whitespace) characters are removed from both ends of the string then you can use

let string = "\n\nBLA\nblub"
let trimmed = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
// In Swift 1.2 (Xcode 6.3):
let trimmed = (string as NSString).stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

To remove leading newline/whitespace characters only you can (for example) use a regular expression search and replace:

let trimmed = string.stringByReplacingOccurrencesOfString("^\\s*",
    withString: "", options: .RegularExpressionSearch)

"^\\s*" matches all whitespace at the beginning of the string. Use "^\\n*" to match newline characters only.

Update for Swift 3 (Xcode 8):

let trimmed = string.replacingOccurrences(of: "^\\s*", with: "", options: .regularExpression)
Martin R
  • 510,973
  • 84
  • 1,183
  • 1,314
18

You can use extension for Trim

Ex.

let string = "\n\nBLA\nblub"
let trimmed = string.trim()

extension String {
    func trim() -> String {
          return self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
    }
}
Jack
  • 12,109
  • 4
  • 69
  • 95