<分区>
我需要将使用拉丁字母书写的欧洲地名与某些字符上的重音符号(变音符号)进行比较。有很多中欧和东欧的名字都是用重音符号写的,比如 ž
和 ü
上的拉丁字符,但有些人只用普通的拉丁字符写名字,而不用重音符号,例如 z
和 u
。
我需要一种方法让我的系统识别例如 mšk žilina
与 msk zilina
相同,并且对于使用的所有其他重音字符都相似。有没有简单的方法可以做到这一点?
<分区>
我需要将使用拉丁字母书写的欧洲地名与某些字符上的重音符号(变音符号)进行比较。有很多中欧和东欧的名字都是用重音符号写的,比如 ž
和 ü
上的拉丁字符,但有些人只用普通的拉丁字符写名字,而不用重音符号,例如 z
和 u
。
我需要一种方法让我的系统识别例如 mšk žilina
与 msk 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/
相关文章:
java - 将 PCRE 正则表达式修改为 C# 或 Java 支持的正则表达式
c# - String.Empty、null、Length 或 String.IsEmptyOrNull?
java - Normalizer.normalize(s, Normalizer.Form.NFD) 和 StringUtils.stripAccents(s) 之间的实际区别是什么?
java - Spring Data JPA 是否有任何方法可以使用方法名称解析对实体列求和?
python - 返回 Python 字符串中第一个非空白字符的最低索引