Java 比较不带大小写的字符串

Java 比较不带大小写的字符串,java,string,Java,String,我想知道一个词是否与另一个词相同,但大小写不重要。 有些人喜欢这样: String a = new String "test"; String b = new String "Test"; a.equals(b); // should be true; 你可以用 注意:字符串的声明不正确,应该是: String a = "test";// or String a = new String("test"); String b = "Test";// or String b = new Strin

我想知道一个词是否与另一个词相同,但大小写不重要。 有些人喜欢这样:

String a = new String "test";
String b = new String "Test";
a.equals(b); // should be true;
你可以用

注意:字符串的声明不正确,应该是:

String a = "test";// or String a = new String("test");
String b = "Test";// or String b = new String("Test");

另一种方法是将两者都更改为或,然后比较:

String a = "test";
String b = "Test";
System.out.println(a.toLowerCase().equals(b.toLowerCase())); // prints true

等信号情况此解决方案似乎更糟。首先,equalsIgnoreCase可能更优化。第二,使用equalsIgnoreCase更清晰。@Amongalen可能更糟;因此,我以另一种方式开始这篇文章的原因是……可能值得注意的是,这些选项并不等效,因为unicode中的大小写转换不是双射的——有几个大写字母映射到同一个小写字母,还有几个小写字母映射到同一个大写字母。一些小写字母甚至映射到多个大写字母,如德语ß=>SS。此外,String.equalsIgnoreCase不使用特定于区域设置的大小写规则,而String.toLowerCase和toUpperCase则使用。短版本-大多数人认为它更复杂,每个版本都能产生令人惊讶的结果。另请参见和
String a = "test";
String b = "Test";
System.out.println(a.toLowerCase().equals(b.toLowerCase())); // prints true