有没有办法在不区分大小写的情况下比较 2 个字符串?
Is there a way to compare 2 Strings without it being case-sensitive?
我刚刚花了将近一个小时调试代码中的 List<String>
,但我的 Comparator
排序错误。
原来 string.compareTo(string2)
是区分大小写的。这意味着所有大写字母都在小写字母之前。例如"Z" 在 "d" 之前。
有没有更好的方法来比较 Comparator
中的 2 Strings
并按字母升序对它们进行排序而不区分大小写 string.toLowerCase().compareTo(string2.toLowerCase());
?
编辑:我的 String
中可能出现任何重音字母,例如:ä、ö、ü、é、è 等
使用String.CASE_INSENSITIVE_ORDER.compare
compareToIgnoreCase
字符串 Api 有第二个比较函数,它在忽略大小写的情况下进行比较。
string1.compareToIgnoreCase(string2);
字符串本身提供了两个选项:
String.compareToIgnoreCase(String)
:compareTo
) 的不区分大小写的变体
String.CASE_INSENSITIVE_ORDER
: Comparator
与 compareToIgnoreCase
的顺序相同
- 或者,对于更高级的选项,例如特定于语言环境的规则,
java.text.Collator
and java.text.RuleBasedCollator
提示:您的第一站应该是 Javadoc,而不是 post Stack Overflow 上的问题:Javadoc 内容广泛,通常会提供快速答案。
使用 compareToIgnoreCase() 方法
我刚刚花了将近一个小时调试代码中的 List<String>
,但我的 Comparator
排序错误。
原来 string.compareTo(string2)
是区分大小写的。这意味着所有大写字母都在小写字母之前。例如"Z" 在 "d" 之前。
有没有更好的方法来比较 Comparator
中的 2 Strings
并按字母升序对它们进行排序而不区分大小写 string.toLowerCase().compareTo(string2.toLowerCase());
?
编辑:我的 String
中可能出现任何重音字母,例如:ä、ö、ü、é、è 等
使用String.CASE_INSENSITIVE_ORDER.compare
compareToIgnoreCase
字符串 Api 有第二个比较函数,它在忽略大小写的情况下进行比较。
string1.compareToIgnoreCase(string2);
字符串本身提供了两个选项:
String.compareToIgnoreCase(String)
:compareTo
) 的不区分大小写的变体
String.CASE_INSENSITIVE_ORDER
:Comparator
与compareToIgnoreCase
的顺序相同
- 或者,对于更高级的选项,例如特定于语言环境的规则,
java.text.Collator
andjava.text.RuleBasedCollator
提示:您的第一站应该是 Javadoc,而不是 post Stack Overflow 上的问题:Javadoc 内容广泛,通常会提供快速答案。
使用 compareToIgnoreCase() 方法