Java:为什么String.compareIgnoreCase()同时使用Character.toUpperCase()和Character.toLowerCase()?

Sendhilkumar Alalasundaram

所述compareToIgnoreCase的方法String类是使用该方法在下面的代码段(jdk1.8.0_45)来实现。

一世。为什么都Character.toUpperCase(char)Character.toLowerCase(char)用于比较?他们两个都不能满足比较的目的吗?

ii。为什么s1.toLowerCase().compare(s2.toLowerCase())不习惯执行compareToIgnoreCase-我知道可以以不同的方式实现相同的逻辑。但是,我仍然想知道是否有特定的理由选择一个。

    public int compare(String s1, String s2) {
        int n1 = s1.length();
        int n2 = s2.length();
        int min = Math.min(n1, n2);
        for (int i = 0; i < min; i++) {
            char c1 = s1.charAt(i);
            char c2 = s2.charAt(i);
            if (c1 != c2) {
                c1 = Character.toUpperCase(c1);
                c2 = Character.toUpperCase(c2);
                if (c1 != c2) {
                    c1 = Character.toLowerCase(c1);
                    c2 = Character.toLowerCase(c2);
                    if (c1 != c2) {
                        // No overflow because of numeric promotion
                        return c1 - c2;
                    }
                }
            }
        }
        return n1 - n2;
    }
安迪·特纳(Andy Turner)

这是使用土耳其语i的示例:

System.out.println(Character.toUpperCase('i') == Character.toUpperCase('İ'));
System.out.println(Character.toLowerCase('i') == Character.toLowerCase('İ'));

第一行打印false; 第二trueIdeone demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章