如何将一个字符串拆分成句子可可

时间:2010-01-28 03:34:52

标签: iphone objective-c cocoa string nsstring

我有一个NSString有多个句子,我想把它分成NSArray个句子。以前有人解决了这个问题吗?我发现enumerateSubstringsInRange:options:usingBlock:能够做到这一点,但看起来它在iPhone上不可用(仅限Snow Leopard)。我想过根据句点分割字符串,但这看起来不太稳健。

到目前为止,我最好的选择似乎是使用RegexKitLite将其正则化为一系列句子。溶液

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:3)

我会使用扫描仪,

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但您可能会遇到一种方法 对这种情况更好。

答案 2 :(得分:1)

我暂时没有使用它们,但我认为你可以使用NSString,NSCharacterSet和NSScanner来做到这一点。您创建一个包含结束句点标点的字符集,然后调用-[NSScanner scanUpToCharactersFromSet:intoString:]。每次扫描都会将一个句子吸收到一个字符串中,并继续调用该方法,直到扫描程序用完字符串。

当然,文字必须很好地标点。

答案 3 :(得分:0)

怎么样:

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

这将从字符串“One.2。Three。”返回一个数组(“One”,“Two”,“Three”)。

答案 4 :(得分:0)

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