swift - 如何在 CFString 中获得分隔线?
问题描述
我想要一种在巨大的string
. 我搜索并找到了这篇文章:
https ://medium.com/@sorenlind/three-ways-to-enumerate-the-words-in-a-string-using-swift-7da5504f0062
基于这篇文章,我想使用CFStringTokenizer
. 所以我改成kCFStringTokenizerUnitWord
了kCFStringTokenizerUnitLineBreak
,最后我使用了这段代码:
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
}
但它返回给我的是单独的单词而不是单独的行。问题是什么?或者,如果您可以建议另一种方式(良好的性能)。谢谢。
解决方案
推荐阅读
- python-3.x - Stanza Stanford NLP:无法从“spacy_stanza”导入名称“StanzaLanguage”
- wpf - 为什么在 Visual Studio 2019 中不会生成 WPF 表单的 .g.vb 文件?
- python - python 5 (dim 1) != 1 (dim 0)
- django - 如何在多对多领域 django 中获取最新的 id
- php - Woocommerce 附加信息选项卡:添加产品自定义字段值
- python - 验证检查不包括增值税 - 增值税和总金额
- pyspark - 如何在时间戳值上使用 dense_rank 和 rangeBetween?
- c++ - 在 C++ 中使用 system() 函数时,ASCII 字符 27(左箭头)消失
- javascript - 变换旋转发生后元素变换比例保持不变
- oracle - Oracle 数据字典