从拉丁字符中删除重音符号(变音符号)以进行比较

Oli*_*ver 6 java string diacritics transliteration

我需要将使用拉丁字母书写的欧洲地方的名称与某些字符上的重音符号(变音符号)进行比较.有很多中央和写有像拉丁字符重音符号的东欧名称žü,但有些人只是用常规的拉丁字符没有重音符号像写的名字zu.

我需要一种方法让我的系统识别出例如与所用的所有其他重音字符mšk žilina相同msk zilina,并且类似.有一个简单的方法吗?

Bal*_*usC 11

您可以使用的java.text.Normalizer小的正则表达式摆脱的区别标记.

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

用法示例:

String text = "mšk žilina";
String normalized = removeDiacriticalMarks(text);
System.out.println(normalized); // msk zilina
Run Code Online (Sandbox Code Playgroud)