This question already has answers here:
Remove diacritical marks (ń ǹ ň ñ ṅ ņ ṇ ṋ ṉ ̈ ɲ ƞ ᶇ ɳ ȵ) from Unicode chars

(12个答案)


已关闭6年。




我需要比较使用拉丁字母在某些字符上带有重音符号(变音符号)的欧洲场所的名称。有许多中欧和东欧名称,在žü上都带有诸如拉丁字符的重音符号,但是有些人仅使用不带重音符号的常规拉丁字符来写名称,例如zu

我需要一种方法来让我的系统识别例如mšk žilinamsk zilina相同,并且对于所有其他带重音符号的字符都相似。有没有简单的方法可以做到这一点?

最佳答案

您可以使用 java.text.Normalizer little regex摆脱diacritical marks

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

关于java - 从拉丁字符中删除重音符号(变音符号)以进行比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3222972/

10-10 23:50