我需要将使用拉丁字母书写的欧洲地方的名称与某些字符上的重音符号(变音符号)进行比较。有许多中欧和东欧名称在ž
和ü
上使用重音符号(如拉丁字符)编写,但有些人只使用常规拉丁字符编写名称,而不使用{{1}等重音符号}和z
。
我需要一种让我的系统识别的方法,例如u
与mšk žilina
相同,并且与所有其他重音字符相似。有一个简单的方法吗?
答案 0 :(得分:11)
您可以使用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