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.