我正在尝试使用CFStringTokenizer和kCFStringTokenizerUnitSentence将字符串拆分成句子。我遇到的第一个问题是句子需要大写,以便将它们识别为句子。如果没有,它只是认为它是前一句的一部分。
我正在拆分用户输入的文字,所以我希望文字非常不干净。
我还能用CFStringTokenizer做些什么让它检测到无资本化的句子吗?或者我是否必须使用另一种完全分裂的方法?
我在这个问题上的答案是关于我的实施: How to get an array of sentences using CFStringTokenizer?
注意:经过kCFStringTokenizerUnitSentence似乎更多测试后,如果是'!'还是'?'接下来是一个没有大写的句子,它会认出这句话。此外,如果其中一个标点符号后跟一个句子,而'!'之间没有空格而第一个词,它仍将分开。
所以我需要解决的一个案例是'。'然后是一个没有大写的句子。
另一个选项我发现,如果你从textField获取文本,就是使用它:
textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
它会自动将句子大写,因此您不必担心转换为CFStringTokenizer。它仍然没有考虑缩写等边缘情况,但至少在我的情况下,如果错误,用户可以选择删除自动大写。
答案 0 :(得分:0)
您可以先将输入字符串转换为全部大写,然后通过CFStringTokenizer
运行它,并使用范围来获取原始输入字符串的子字符串。但是你必须要小心,因为转换为大写后,某些字符可能会超过1个字符。