6

我需要将使用拉丁字母书写的欧洲地名与某些字符上的重音符号(变音符号)进行比较。有很多中欧和东欧的名字在 and 上带有重音符号,如拉丁字符žü但有些人只使用没有重音符号的常规拉丁字符写名字,如zand u

我需要一种方法让我的系统识别例如与使用的所有其他重音字符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 回答