EqualsIgnoreCase()无法正常工作。

时间:2017-05-29 09:14:15

标签: java string locale case-sensitive

当我运行以下程序时,它只打印

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

在两种操作中都使用大写字符。

2 个答案:

答案 0 :(得分:10)

您正在使用/比较德语ß符号,其大写字母 SS ...因此您需要使用{{1 }}

Locale.German

将返回true ....

答案 1 :(得分:0)

是的,它是正确的。

  
    

if(string1.equalsIgnoreCase(string2))....

  

忽略string1和string2的小写和大写。

  
    

if(string1.equals(string2))....

  

将检测到,有不同的字母,不打印..他们是平等的。 第二个使用大写转换的示例也可以。