Java的equalsIgnoreCase失败,ß(“Sharp S”用于德语字母表)

我的第一个问题在这里:-)
我最好阅读规则,并搜索是否已经问过这个问题.

以下代码

    String[] strings = {"cAsE", "\u00df"};
    for (String str : strings) {
        System.out.println(str.equalsIgnoreCase(str.toLowerCase()));
        System.out.println(str.equalsIgnoreCase(str.toUpperCase()));
    }

输出真3次(cAsE = case; cAsE = CASE;ß=ß)
还有1个假(ß!= SS).
尝试使用LowerCase(Locale),但它没有帮助.

这是一个已知的问题?

直到最近,Unicode没有定义s-sharp的大写版本.我不知道最新的Java 7版本是否已经包含这个新的字符以及它是否正确处理它.我建议尝试一下.

str.toLowerCase()不返回与str.toUpperCase().toLowerCase()相同的原因是Java用SS替换了ß,但没有办法返回,所以SS变为ss,比较失败.

所以如果你需要调整大小写,你必须使用str.toLowerCase().如果没有,那么简单地调用equalsIgnoreCase()就不会有任何上/下转换.

翻译自:https://stackoverflow.com/questions/1334004/javas-equalsignorecase-fails-with-%c3%9f-sharp-s-used-in-german-alphabet

转载注明原文:Java的equalsIgnoreCase失败,ß(“Sharp S”用于德语字母表)