0

デフォルトの連絡先電話帳を置き換えるアプリを作成しています。連絡先の名前を検索するための検索バーを追加したいと考えています。

今のところ、自分のDBにすべての連絡先があり、editTextの変更を追跡し続けるためのTextWatcherがあります。次に、ユーザーが入力した文字シーケンスを使用してクエリを作成します。すべての連絡先が「a」で始まるように、ユーザーが検索するすべての連絡先を取得しています。ここで、á、é、í、ó、ú などの特殊文字を無視する新しい機能を追加したいと考えています。

ユーザーが a を入力しても、á で始​​まるすべての連絡先を e と他のすべての文字で同じように取得できるようにしたいと考えています。

クエリ自体でこれを行う方法はありますか、またはそれを達成するために Java/Android が提供するものがあります。

ありがとう。

4

2 に答える 2

4

java.text.Normalizerアクセントを取り除くために使用できます。

String strippedAccent = Normalizer.normalize(someText, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

クエリで使用したい場合は、検索可能なテキストの簡素化されたバージョンを含むフィールドを DB に追加する必要があります。

于 2013-01-23T13:53:18.833 に答える
0

この変更は、nubdial では非常にうまく機能しました。それもかなり速いです。

于 2013-01-23T14:08:56.870 に答える