如何使我的字符串比较不区分大小写?

我创建了一个Java程序来比较两个字符串:


String s1 = "Hello";

String s2 = "hello";


if (s1.equals(s2)) {

    System.out.println("hai");

} else {

    System.out.println("welcome");

}

它显示“欢迎”。我了解它区分大小写。但是我的问题是我想比较两个不区分大小写的字符串。即我希望输出是hai。


慕工程0101907
浏览 732回答 3
3回答

隔江千里

最好是使用s1.equalsIgnoreCase(s2):(请参阅javadoc)您也可以将它们都转换为大写/小写并使用 s1.equals(s2)

拉莫斯之舞

String.equalsIgnoreCase 是不区分大小写的幼稚字符串比较的最实用选择。但是,很高兴知道此方法既不进行全大小写折叠也不进行分解,因此无法执行Unicode标准中指定的无大小写匹配。实际上,JDK API不提供对有关大小写折叠字符数据的信息的访问,因此,最好将这项工作委派给一个久经考验的第三方库。该库是ICU,这是一种实现不区分大小写的字符串比较的实用程序的方法:import com.ibm.icu.text.Normalizer2;// ...public static boolean equalsIgnoreCase(CharSequence s, CharSequence t) {    Normalizer2 normalizer = Normalizer2.getNFKCCasefoldInstance();    return normalizer.normalize(s).equals(normalizer.normalize(t));}    String brook = "flu\u0308ßchen";    String BROOK = "FLÜSSCHEN";    assert equalsIgnoreCase(brook, BROOK);即使对这种简单测试String.equalsIgnoreCase,用,或String.equals对大写或小写字符串的幼稚比较也会失败。(请注意,尽管预定义的案例折叠样式getNFKCCasefoldInstance是与语言环境无关的;对于土耳其语语言环境,UCharacter.foldCase可能需要进行更多工作。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java