6

一部の文字にアクセント記号 (分音記号) が付いたラテン アルファベットを使用して書かれたヨーロッパの地名を比較する必要があります。中欧や東欧の名前はラテン文字のžや などにアクセント記号を付けて書く人が多いですが、 や のようにüアクセント記号を付けずに通常のラテン文字だけで名前を書く人もいます。zu

たとえば、 とmšk žilina同じmsk zilinaであり、使用されている他のすべてのアクセント付き文字と同様であることをシステムに認識させる方法が必要です。これを行う簡単な方法はありますか?

4

1 に答える 1

11

java.text.Normalizer少しの正規表現を利用して、分音記号を取り除くことができます。

public static String removeDiacriticalMarks(String string) {
    return Normalizer.normalize(string, Form.NFD)
        .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}

使用例:

String text = "mšk žilina";
String normalized = removeDiacriticalMarks(text);
System.out.println(normalized); // msk zilina
于 2010-07-11T12:04:07.090 に答える