当我运行以下程序时,它只打印
equals says they are equal
但是从java 8中的equalsIgnoreCase docs我们得到:
如果在,则两个字符c1和c2被视为相同的忽略大小写 至少下列之一是真的:
•应用该方法 每个字符的java.lang.Character.toUpperCase(char)产生相同的结果
public class Test {
public static void main(String[] args) {
String string1 = "abc\u00DF";
String string2 = string1.toUpperCase();
if (string1.equalsIgnoreCase(string2))
System.out.println("equalsIgnoreCase says they are equal");
if (string1.toUpperCase().equals(string2.toUpperCase()))
System.out.println("equals says they are equal");
}
}
所以我的问题是为什么这个程序没有打印
equalsIgnoreCase says they are equal
在两种操作中都使用大写字符。
答案 0 :(得分:10)
您正在使用/比较德语ß符号,其大写字母 SS ...因此您需要使用{{1 }}
Locale.German
将返回true ....
答案 1 :(得分:0)
是的,它是正确的。
if(string1.equalsIgnoreCase(string2))....
忽略string1和string2的小写和大写。
if(string1.equals(string2))....
将检测到,有不同的字母,不打印..他们是平等的。 第二个使用大写转换的示例也可以。