How to split a string by new lines in Swift

后端 未结 9 2461
一个人的身影
一个人的身影 2020-11-29 06:59

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

9条回答
  •  醉话见心
    2020-11-29 07:43

    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]"
    

提交回复
热议问题