【问题标题】:How to split a string into sentences cocoa如何将字符串拆分成句子可可
【发布时间】:2010-01-28 03:34:51
【问题描述】:

我有一个包含多个句子的NSString,我想将其拆分为一个句子的NSArray。以前有人解决过这个问题吗?我发现enumerateSubstringsInRange:options:usingBlock: 能够做到这一点,但它看起来在 iPhone 上不可用(仅限雪豹)。我想过根据句点拆分字符串,但这似乎不是很健壮。

到目前为止,我最好的选择似乎是使用 RegexKitLite 将其正则表达式为一组句子。解决方案?

【问题讨论】:

  • 定义“句子”。一旦你能做到这一点,解决方案就很简单了。
  • 是的,我希望其他人已经提出了一个相当可靠的句子定义。我愿站在巨人的肩膀上!
  • 如果你看一下 TeX,它会猜测句点标记句子的结尾,除非它们紧跟在大写字母之后 - 如果不正确,你必须手动指定它是句号还是简单的句号缩写标记。

标签: iphone objective-c cocoa string nsstring


【解决方案1】:

使用CFStringTokenizer。您需要使用 kCFStringTokenizerUnitSentence 选项创建标记器。

【讨论】:

    【解决方案2】:

    我会使用扫描仪,

    NSScanner *sherLock = [NSCanner scannerWithString:yourString]; // autoreleased
    NSMutableArray *theArray = [NSMutableArray array]; // autoreleased
    while( ![sherLock isAtEnd] ){
       NSString *sentence = @"";
       // . + a space, your sentences probably will have that, and you
       // could try scanning for a newline \n but iam not sure your sentences
       // are seperated by it
       [sherLock scanUpToString:@". " inToString:&sentence];
       [theArray addObject:sentence];
    }
    

    应该这样做,可能会有一些小错误,但我会这样做。 不过,您应该在文档中查找 NSScanner .. 您可能会遇到一种方法 更适合这种情况。

    【讨论】:

      【解决方案3】:

      我已经有一段时间没有使用它们了,但我认为您可以使用 NSString、NSCharacterSet 和 NSScanner 来做到这一点。您创建一个包含句末标点符号的字符集,然后调用-[NSScanner scanUpToCharactersFromSet:intoString:]。每次 Scan 都会将一个句子吸出到一个字符串中,然后您继续调用该方法,直到扫描仪用完字符串。

      当然,文本必须有很好的标点。

      【讨论】:

        【解决方案4】:

        怎么样:

        NSArray *sentences = [string componentsSeparatedByString:@". "];
        

        这将从字符串“一.二.三”返回一个数组(“一”、“二”、“三”)。

        【讨论】:

        • “我的朋友马克博士获得了圣裘德大学的博士学位”怎么样。
        • 是的,我在发布问题后尝试了该方法。它比仅仅扫描“。”效果更好。但不多。
        【解决方案5】:

        NSArray *sentences = [astring componentsSeparatedByCharactersInSet:[NSCharacterSet punctuationCharacterSet] ];

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-07
          • 1970-01-01
          • 1970-01-01
          • 2021-10-16
          • 1970-01-01
          相关资源
          最近更新 更多