我试图用CFStringTokenizer和kCFStringTokenizerUnitSentence将一个字符串拆分成句子。我遇到的第一个问题是句子需要大写,以便将它们识别为句子。如果不是,它只是认为它是前一句话的一部分。CFStringTokenizer不标记小写的句子
我正在拆分用户输入的文本,因此我期望文本非常不洁。
是否还有其他我可以用CFStringTokenizer做的事情,让它检测到非大写的句子?或者我将不得不使用另一种分裂方法?
我也跟着上了我的实现这太问题的答案: How to get an array of sentences using CFStringTokenizer?
注:“!”测试了一下后,更似乎与kCFStringTokenizerUnitSentence,如果或'?'之后是一个非大写的句子,它会识别这个句子。另外,如果其中一个标点符号后面跟着一个没有“!”之间的空格的句子,和第一个字,它仍然会分开。
所以我需要解决的一种情况是'。'其次是一个无大写的句子。
另一种选择,我发现,如果你得到从文本框的文本,就是用这样的:
textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
它会自动大写的句子,所以你不必担心转换对于CFStringTokenizer。它仍然没有考虑像缩写这样的边缘情况,但至少在我的情况下,如果用户有错,用户可以选择删除自动大写。
你需要语言无关的解析吗?如果不是,你可以用[句子componentsSeparatedByString:@“”]来近似; – danh 2013-03-28 04:42:56
@danh我确实需要语言无关的解析。另外,我需要一些非常强大的东西,因为弦乐会到处都是。我真的很喜欢覆盖所有情况(如果存在的话)的开箱即用语句标记器。 – Ramsel 2013-03-28 16:12:44