大家好
我需要在 Java 中比较字符串,例如 'Chloe' 和 'Chloé'。我希望它们相等。请问有什么最佳实践吗?或者是否有第三方库可以使用?
Roman
大家好
我需要在 Java 中比较字符串,例如 'Chloe' 和 'Chloé'。我希望它们相等。请问有什么最佳实践吗?或者是否有第三方库可以使用?
Roman
请查看Unicode国际组件,它可以满足您的需求。
编辑:以下是一些示例代码(来自Collator Javadoc),可供您参考:
// Get the Collator for US English and set its strength to PRIMARY
Collator usCollator = Collator.getInstance(Locale.US);
usCollator.setStrength(Collator.PRIMARY);
if (usCollator.compare("abc", "ABC") == 0) {
System.out.println("Strings are equivalent");
}
public static String replaceAccents(String string) {
String result = null;
if (string != null) {
result = string;
result = result.replaceAll("[àáâãåä]", "a");
result = result.replaceAll("[ç]", "c");
result = result.replaceAll("[èéêë]", "e");
result = result.replaceAll("[ìíîï]", "i");
result = result.replaceAll("[ñ]", "n");
result = result.replaceAll("[òóôõö]", "o");
result = result.replaceAll("[ùúûü]", "u");
result = result.replaceAll("[ÿý]", "y");
result = result.replaceAll("[ÀÁÂÃÅÄ]", "A");
result = result.replaceAll("[Ç]", "C");
result = result.replaceAll("[ÈÉÊË]", "E");
result = result.replaceAll("[ÌÍÎÏ]", "I");
result = result.replaceAll("[Ñ]", "N");
result = result.replaceAll("[ÒÓÔÕÖ]", "O");
result = result.replaceAll("[ÙÚÛÜ]", "U");
result = result.replaceAll("[Ý]", "Y");
}
return result;
}
那么 Apache Commons 的 stripAccent 怎么样?
Removes the accents from a string.
NOTE: This is a JDK 1.6 method, it will fail on JDK 1.5.
StringUtils.stripAccents(null) = null
StringUtils.stripAccents("") = ""
StringUtils.stripAccents("control") = "control"
StringUtils.stripAccents("&ecute;clair") = "eclair"
Parameters:
input - String to be stripped
Returns:
String without accents on the text
他们没有提到Unicode编码(只给出了HTML示例),但你仍然可以尝试一下。