如何计算文本字符串中的单词? [英] How to count words within a text string?

查看:125
本文介绍了如何计算文本字符串中的单词?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在iOS上,如何计算特定文本字符串中的单词?

On iOS, how can I count words within a specific text string?

推荐答案

比分割更有效的方法是逐字符检查字符串。

A more efficient method than splitting is to check the string character by character.

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;
}

@ ennuikiller的解决方案,计算一个1,000,000字的字符串:

Compared with @ennuikiller's solution, counting a 1,000,000-word string takes:


  • 0.19秒构建字符串

  • 0.39秒构建字符串+使用我的方法计数。

  • 1.34秒使用ennuikiller的方法构建字符串+计数。

我的方法的一大缺点是它不是一个 - 班轮。

The big disadvantage of my method is that it's not a one-liner.

这篇关于如何计算文本字符串中的单词?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆