Iphone 如何将字符串拆分成句子
我有一个包含许多句子的Iphone 如何将字符串拆分成句子,iphone,objective-c,cocoa,string,nsstring,Iphone,Objective C,Cocoa,String,Nsstring,我有一个包含许多句子的NSString,我想把它分成一个NSArray句子。以前有人解决过这个问题吗?我找到了EnumerateSubstringsRange:options:usingBlock:,它可以做到这一点,但看起来它在iPhone上不可用(仅限雪豹)。我曾考虑过根据句点拆分字符串,但这似乎不是很可靠 到目前为止,我最好的选择似乎是使用RegexKitLite将其正则化为一系列句子。解决方案?使用。您需要使用kCFStringTokenizerUnitSentence选项创建标记器。我
NSString
,我想把它分成一个NSArray
句子。以前有人解决过这个问题吗?我找到了EnumerateSubstringsRange:options:usingBlock:
,它可以做到这一点,但看起来它在iPhone上不可用(仅限雪豹)。我曾考虑过根据句点拆分字符串,但这似乎不是很可靠
到目前为止,我最好的选择似乎是使用RegexKitLite将其正则化为一系列句子。解决方案?使用。您需要使用
kCFStringTokenizerUnitSentence
选项创建标记器。我已经有一段时间没有使用它们了,但我认为您可以使用NSString、NSCharacterSet和NSScanner来实现这一点。您创建一个包含结尾句子标点的字符集,然后调用-[NSScanner scanuptocharacters fromset:intoString:][/code>。每次扫描都会将一个句子抽取成一个字符串,您会一直调用该方法,直到扫描程序用完字符串
当然,文本必须有很好的标点符号 我会用扫描仪扫描
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。。您可能会遇到这样一种方法:
对于这种情况更好。那么:
NSArray *sentences = [string componentsSeparatedByString:@". "];
这将从字符串“One.Two.Three”返回一个数组(“One”、“Two”、“Three”)。NSArray*语句=[astring Components SeparatedByCharactersInSet:[NSCharacterSet标点符号集CharacterSet]] 定义“句子”。一旦你能做到这一点,解决办法就简单明了了。是的,我希望其他人已经对一个句子给出了一个合理有力的定义。我希望站在巨人的肩膀上!如果你看TeX,它猜测句号标记句子的结尾,除非它们紧跟在大写字母之后-如果这不对,你必须手动指定它是句号还是缩写。可能是“我的朋友马克博士从圣裘德学院获得博士学位”的重复,在我发布问题后,我尝试了这种方法。它比只扫描“.”效果更好,但也不多。