Javaでテキストを正規化/アクセント設定しないようにするにはどうすればよいですか?私は現在java.text.Normalizerを使用しています:
Normalizer.normalize(str, Normalizer.Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "")
しかし、それは完璧にはほど遠いです。たとえば、ノルウェー語の文字æとøはそのままにします。誰かが代替案を知っていますか?あらゆる種類の言語の文字をaz範囲だけに変換するものを探しています。これを行うにはさまざまな方法があることを認識しており(たとえば、æは「a」、「e」、さらには「ae」としてエンコードする必要がありますか?)、私はあらゆる解決策を受け入れています。すべての言語でこれがうまくできるとは思えないので、自分で何かを書くのは好きではありません。パフォーマンスは重要ではありません。
ユースケース:ユーザーが入力した名前をプレーンなaz範囲の名前に変換したい。変換された名前はユーザーに表示されるので、ユーザーが元の言語で書いたものとできるだけ一致させたいと思います。
編集:
了解しました。投稿を無視し、私の質問に答えてくれなかったことに感謝します。:)多分私はユースケースを省くべきでした。しかし、はっきりさせておきます。内部に保存するために名前を変換する必要があります。ここで許可されている文字の選択を制御することはできません。名前は、たとえばURLでユーザーに表示されます。このフォーラムのユーザー名が正規化され、名前をクリックするとURLに表示されるのと同じ方法です。このフォーラムは、「Bășan」のような名前を「baan」に変換し、「Øyvind」のような名前を「yvind」に変換します。私はそれがより良くできると信じています。私はアイデアを探しており、できればこれを行うためのライブラリ関数を探しています。正しく理解できないこと、「o」と「ø」が違うことなどは知っていますが、私の名前が「Øyvind」でオンラインフォーラムに登録する場合は、ユーザー名を「 「oyvind」ではなく「oyvind」。これが理にかなっていることを願っています!ありがとう!
(いいえ、ユーザーが自分のユーザー名を選択することは許可されません。私は本当にjava.text.Normalizerに代わるものを探しています。ありがとう!)