我有一个NSString
有多个句子,我想把它分成NSArray
个句子。以前有人解决了这个问题吗?我发现enumerateSubstringsInRange:options:usingBlock:
能够做到这一点,但看起来它在iPhone上不可用(仅限Snow Leopard)。我想过根据句点分割字符串,但这看起来不太稳健。
到目前为止,我最好的选择似乎是使用RegexKitLite将其正则化为一系列句子。溶液
答案 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]];