首页 > 解决方案 > 如何在 CFString 中获得分隔线?

问题描述

我想要一种在巨大的string. 我搜索并找到了这篇文章: https ://medium.com/@sorenlind/three-ways-to-enumerate-the-words-in-a-string-using-swift-7da5504f0062

基于这篇文章,我想使用CFStringTokenizer. 所以我改成kCFStringTokenizerUnitWordkCFStringTokenizerUnitLineBreak,最后我使用了这段代码:

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
}

但它返回给我的是单独的单词而不是单独的行。问题是什么?或者,如果您可以建议另一种方式(良好的性能)。谢谢。

标签: swiftstringcfstring

解决方案


推荐阅读