Faz*_* Ya 2 objective-c ios4 ios ios5
我一直在尝试使用正则表达式来分隔大块文本中的完整句子.我不能使用componentsSeparatedByCharactersInSet,因为它显然会失败,句子以?!,!!,...结尾...我已经看到一些外部类来做componentSeparateByRegEx但是我更喜欢这样做而不添加外部库.
这是一个示例输入 嗨,我正在测试.你好吗?哇!!这是最好的,我很高兴.
输出应该是一个数组
第一个元素:嗨,我正在测试.
第二个要素: 你好吗?
第三元素:哇!!
第四个要素:这是最好的,我很高兴.
这就是我所拥有的,但正如我所提到的,它不应该做我想要的.正则表达式可能会在这里做得更好.
-(NSArray *)getArrayOfFullSentencesFromBlockOfText:(NSString *)textBlock{
NSMutableCharacterSet *characterSet = [[NSMutableCharacterSet alloc] init];
[characterSet addCharactersInString:@".?!"];
NSArray * sentenceArray = [textBlock componentsSeparatedByCharactersInSet:characterSet];
return sentenceArray;
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助,
Lil*_*ard 13
您想要使用-[NSString enumerateSubstringsInRange:options:usingBlock:]该NSStringEnumerationBySentences选项.这将为您提供每个句子,并以语言识别的方式进行.
NSArray *fullSentencesFromText(NSString *text) {
NSMutableArray *results = [NSMutableArray array];
[text enumerateSubstringsInRange:NSMakeRange(0, [text length]) options:NSStringEnumerationBySentences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
[results addObject:substring];
}];
return results;
}
Run Code Online (Sandbox Code Playgroud)
注意,在测试中,每个子字符串在标点符号后似乎包含尾随空格.你可能想把它们剥掉.
| 归档时间: |
|
| 查看次数: |
1446 次 |
| 最近记录: |