ios - CFStringTokenizer不标记小写句子

标签 ios objective-c

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

我正在分割用户输入的文本,因此我希望文本非常不干净。

我还能使用CFStringTokenizer进行其他操作以使其检测未大写的句子吗?还是我必须使用另一种完全拆分的方法?

我按照这个SO问题的答案进行了实施:
How to get an array of sentences using CFStringTokenizer?

注意:经过更多测试后,似乎使用kCFStringTokenizerUnitSentence,如果出现“!”还是一个“?”后面跟着一个不大写的句子,它将识别该句子。同样,如果这些标点符号之一后接一个句子,且“!”之间没有空格和第一个单词,它将仍然分开。

因此,我需要解决的一个情况是“。”。其次是没有大写字母的句子。

我发现的另一个选择是,如果您要从textField获取文本,请使用以下方法:

textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;

它会自动将句子大写,因此您不必担心为CFStringTokenizer进行转换。它仍然不能解决缩写之类的极端情况,但是至少在我的情况下,如果错误,用户将可以选择删除自动大写字母。

最佳答案

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

关于ios - CFStringTokenizer不标记小写句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15673931/

相关文章:

ios - 不受我控制的应用程序是否可以访问存储在我帐户中的 iCloud/CloudKit 数据?

ios - 如何使用 .p8 JWT key 测试推送? (APNs 授权 key )

iphone - 奇怪的崩溃并显示消息 "Attempted to dereference garbage pointer"

objective-c - 为什么objectValueForTableColumn对outlineView被调用这么多次?

objective-c - UINavigationController 不推

objective-c - iOS 应用防火墙内容过滤

ios - 如何知道cocos2d中的触摸持续时间?

ios - UIActivityIndi​​catorView startAnimating 在 searchBarSearchButtonClicked 中不起作用

ios - UIBezierPath bezierPathWithArcCenter 未正确居中

iphone - 如何从 ViewController 获取返回值?//popViewController 动画两次?双回?