在 iOS 上,如何计算特定文本字符串中的单词数?
比拆分更有效的方法是逐个字符检查字符串。
int word_count(NSString* s) {
CFCharacterSetRef alpha = CFCharacterSetGetPredefined(kCFCharacterSetAlphaNumeric);
CFStringInlineBuffer buf;
CFIndex len = CFStringGetLength((CFStringRef)s);
CFStringInitInlineBuffer((CFStringRef)s, &buf, CFRangeMake(0, len));
UniChar c;
CFIndex i = 0;
int word_count = 0;
Boolean was_alpha = false, is_alpha;
while (c = CFStringGetCharacterFromInlineBuffer(&buf, i++)) {
is_alpha = CFCharacterSetIsCharacterMember(alpha, c);
if (!is_alpha && was_alpha)
++ word_count;
was_alpha = is_alpha;
}
if (is_alpha)
++ word_count;
return word_count;
}
和....相比@ennukiller 的解决方案,计算 1,000,000 个单词的字符串需要:
- 0.19 秒构建字符串
- 使用我的方法构建字符串 + 计数需要 0.39 秒。
- 1.34 秒构建字符串 + 使用 ennukiller 方法进行计数。
我的方法的一大缺点是它不是一个简单的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)