web-dev-qa-db-ja.com

Java文字列をASCIIに変換する

特定の言語に固有のいくつかの文字(HÄSTDJUR-noteÄなど)で構成されるStringsを、それらの特別な文字(この場合はHASTDJUR)のないStringに変換する必要があります。 Javaでそれを行うにはどうすればよいですか?手伝ってくれてありがとう!


それは実際にはそれがどのように聞こえるかについてではありません。シナリオは次のとおりです。アプリケーションを使用したいが、スウェーデン語のキーボードがありません。したがって、文字コード表を見る代わりに、特殊文字をラテンアルファベットの一般的な文字に置き換えて入力します。

21
grem

あなたの質問はこれと同じだと思います:

Java-アクセントを取り除き、通常の文字に変換する

したがって、答えも同じです。

解決

String convertedString = 
       Normalizer
           .normalize(input, Normalizer.Form.NFD)
           .replaceAll("[^\\p{ASCII}]", "");

参考文献

見る

コード例:

final String input = "Tĥïŝ ĩš â fůňķŷ Šťŕĭńġ";
System.out.println(
    Normalizer
        .normalize(input, Normalizer.Form.NFD)
        .replaceAll("[^\\p{ASCII}]", "")
);

出力:

これはファンキーなストリングです

52

特殊文字を必要な文字にマッピングすることをお勧めします。

Ä --> A
é --> e
A --> A (exactly the same)
etc...

そして、テキスト上でマッピングを(擬似コードで)呼び出すことができます。

for letter in string:
   newString += map(letter)

事実上、どの文字がASCII同等のものにマップされるかについての一連のルールを作成する必要があります。

1
Noel M