- 此问题在此处已有答案**:
Java. Ignore accents when comparing strings(6个答案)
七年前就关门了。
我想知道是否有一个方法可以比较两个字符串,并且忽略重音,使得"noção"等于"nocao"。它可能是string1.methodCompareIgnoreAccent(string2);
Java. Ignore accents when comparing strings(6个答案)
七年前就关门了。
我想知道是否有一个方法可以比较两个字符串,并且忽略重音,使得"noção"等于"nocao"。它可能是string1.methodCompareIgnoreAccent(string2);
2条答案
按热度按时间kcrjzv8t1#
您可以使用java Collators来比较测试,忽略重音符号和大小写符号,参见一个简单的示例:
文件:JavaDoc
"NOCAO"
视为等于"noção"
。要创建忽略重音差异但区分大小写的排序器,您可以使用RuleBasedCollator不要将
Collator.setStrength()
与Collator.setDecomposition()
混淆。Collator
常量PRIMARY
、SECONDARY
、TERTIARY
和IDENTICAL
只能与setStrength()
一起使用,而常量NO_DECOMPOSITION
、CANONICAL_DECOMPOSITION
和FULL_DECOMPOSITION
只能与setDecomposition()
一起使用。(这段代码的早期版本混淆了这一点,并且只有在NO_DECOMPOSITION
和PRIMARY
恰好具有相同整数值时才起作用。)jtw3ybtb2#
没有内置的方法可以做到这一点,因此您必须构建自己的方法:
此解决方案的一部分来自here:这首先将所有重音字符拆分为对应的非重音字符,然后是它们的组合变音符号。然后,您只需删除所有组合变音符号。
然后你的equals方法看起来像这样: