代码之家  ›  专栏  ›  技术社区  ›  Kenny Winker

如何将字符串拆分成句子cocoa

  •  3
  • Kenny Winker  · 技术社区  · 15 年前

    我有一个 NSString 我想把它分成几个句子 NSArray 句子的以前有人解决过这个问题吗?我发现 enumerateSubstringsInRange:options:usingBlock: 这是可以做到的,但看起来它在iPhone上不可用(仅限雪豹)。我考虑过根据句点拆分字符串,但这似乎不太可靠。

    到目前为止,我的最佳选择似乎是使用regexkitlite将它重新组合成一组句子。解决?

    5 回复  |  直到 15 年前
        1
  •  9
  •   Peter Hosey    15 年前

    使用 CFStringTokenizer .您将希望使用 kCFStringTokenizerUnitSentence 选择权。

        2
  •  3
  •   Antwan van Houdt    15 年前

    我会用扫描仪检查它,

    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
  •  1
  •   TechZen    15 年前

    我有一段时间没用过它们了,但我想您可以用nsstring、nscharacterset和nsscanner来实现这一点。创建一个字符集,该字符集包含句尾标点,然后调用 -[NSScanner scanUpToCharactersFromSet:intoString:] .每次扫描都会将一个句子吸进一个字符串,并且您会一直调用该方法,直到扫描程序用完字符串为止。

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

        4
  •  0
  •   Florian    15 年前

    怎么样:

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

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

        5
  •  0
  •   bbaassssiiee    13 年前

    nsarray*senses=[astring componentsseparatedByCharactersInset:[nsCharacterSet标点字符集]];