1. ホーム
  2. java

[解決済み] 記号・アクセント文字をアルファベットに変換する機能

2022-05-25 09:59:54

質問

問題は、ご存知のように、何千もの文字が存在することです。 があることです。 という文字があり、その類似文字をすべて英語のアルファベットに変換したいのです。

例えば、以下のような変換があります。

ҥ->H
Ѷ->V
Ȳ->Y
Ǭ->O
Ƈ->C
tђє Ŧค๓เℓy --> the Family
...

で、A/aという文字には20以上のバージョンがあることがわかりましたが、それらをどう分類したらいいのかわかりません。干し草の中の針のように見えます。

ユニコード文字列の完全なリストは http://www.ssec.wisc.edu/~tomw/java/unicode.html にあります。 または http://unicode.org/charts/charindex.html . スクロールして、文字のバリエーションを見てみてください。

これらをすべてJavaで変換するにはどうしたらよいでしょうか?助けてください :(

どのように解決するのですか?

私の投稿を再投稿する .NETで文字列から発音区分符号(アクセント)を削除するには?

この方法はjavaでうまく動作します (純粋にアクセントと呼ばれる発音区分符号を削除する目的のために) .

これは基本的に、すべてのアクセント付き文字をアクセントを取り除いた文字に変換し、その後に結合する発音区分符号を追加します。これで、正規表現を使用して発音区分符号を取り除くことができます。

import java.text.Normalizer;
import java.util.regex.Pattern;

public String deAccent(String str) {
    String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD); 
    Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
    return pattern.matcher(nfdNormalizedString).replaceAll("");
}