How get seperated lines inside a CFString?

91 views Asked by At

I want a good way for seperating lines inside a huge string. I searched and found this article: https://medium.com/@sorenlind/three-ways-to-enumerate-the-words-in-a-string-using-swift-7da5504f0062

Base on this article I want use CFStringTokenizer. So I changed kCFStringTokenizerUnitWord to kCFStringTokenizerUnitLineBreak and finally I use this code:

func tokenize(_ str:String) -> [String] {
    var inputRange = CFRangeMake(0, str.count)
    var flag = UInt(kCFStringTokenizerUnitLineBreak)
    var locale = CFLocaleCopyCurrent()
    var tokenizer = CFStringTokenizerCreate(kCFAllocatorDefault, str as CFString, inputRange, flag, locale)
    var tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer)


    while tokenType != []
    {
        var currentTokenRange = CFStringTokenizerGetCurrentTokenRange(tokenizer)
        var substring = substringWithRange(str, aRange: currentTokenRange)
        tokens.append(substring)
        tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer)
    }

    return tokens
}

But It return me seperated words not seperated lines. What is the problem? Or If another way(good performance) you can suggest. Thanks.

0

There are 0 answers