2

我正在尝试使用 CFStringTokenizer 和 kCFStringTokenizerUnitSentence 将字符串拆分为句子。我遇到的第一个问题是句子需要大写才能被识别为句子。如果不是,它只是认为它是前一句的一部分。

我正在拆分用户输入的文本,所以我希望文本非常不干净。

我还能用 CFStringTokenizer 做些什么来检测未大写的句子吗?还是我必须使用另一种拆分方法?

我按照这个 SO 问题的答案进行了实施: 如何使用 CFStringTokenizer 获取句子数组?


注意:经过更多测试后,似乎使用 kCFStringTokenizerUnitSentence,如果是“!” 或“?” 后跟一个不大写的句子,它会识别该句子。此外,如果这些标点符号之一后面是一个在“!”之间没有空格的句子 和第一个字,还是会分开。

所以我需要解决的一个情况是'。后跟一个不大写的句子。


我发现的另一个选项,如果您从 textField 获取文本,则使用此:

textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;

它会自动将句子大写,因此您不必担心转换为 CFStringTokenizer。它仍然没有考虑缩写等边缘情况,但至少在我的情况下,如果自动大写错误,用户可以选择删除它。

4

1 回答 1

0

您可以先将输入字符串转换为全部大写,然后运行它CFStringTokenizer并使用范围来获取原始输入字符串的子字符串。但是在这里你必须小心,因为某些字符在转换为大写后可能会超过 1 个字符。

于 2013-03-28T06:22:43.970 回答