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

我需要将使用拉丁字母书写的欧洲地方的名称与某些字符上的重音符号(变音符号)进行比较。 有很多中欧和东欧的名字都是用žü上的拉丁字符等重点标记写的,但有些人只是使用普通的拉丁字符来写名字而没有像zu这样的重音符号。

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

您可以使用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 
Interesting Posts