CFStringTokenizer を kCFStringTokenizerUnitSentence と共に使用して、文字列を文に分割しようとしています。私が抱えている最初の問題は、文として認識されるために文を大文字にする必要があることです。そうでない場合は、前の文の一部であると見なします。
ユーザーが入力したテキストを分割しているので、テキストが非常に汚れていると予想されます。
大文字のない文を検出するために CFStringTokenizer でできることは他にありますか? それとも、完全に分割する別の方法を使用する必要がありますか?
私は自分の実装について、この SO の質問に対する回答に従いました: CFStringTokenizer を使用して文の配列を取得する方法は?
注: もう少しテストした結果、kCFStringTokenizerUnitSentence を使用すると、'!' または「?」の後に大文字のない文が続くと、その文が認識されます。また、これらの句読点のいずれかの後に「!」の間にスペースを入れない文が続く場合、そして最初の単語、それはまだ分離されます。
したがって、回避する必要がある 1 つのケースは「.」です。大文字のない文が続きます。
私が見つけた別のオプションは、テキストフィールドからテキストを取得している場合、これを使用することです:
textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
文は自動的に大文字に変換されるため、CFStringTokenizer の変換について心配する必要はありません。略語などのエッジケースはまだ考慮されていませんが、少なくとも私の場合、ユーザーは自動大文字化が間違っている場合は削除するオプションがあります。