【问题标题】:compare String without large and lower case [duplicate]比较没有大小写的字符串[重复]
【发布时间】:2018-06-14 14:59:36
【问题描述】:

我想知道一个词是否与另一个词相同,但大小写无关紧要。 有些是这样的:

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

【问题讨论】:

  • equalsIgnoreCase()

标签: java string


【解决方案1】:

您可以使用String::equalsIgnoreCase

boolean check = a.equalsIgnoreCase(b);

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这个解决方案似乎更糟。首先,equalsIgnoreCase 可能更优化。其次,使用equalsIgnoreCase要清晰得多。
    • @Amongalen 可能更糟;因此,为什么我以“另一种选择是...”开头。
    • 值得注意的是,这些选项并不等效,因为 unicode 中的大小写转换不是双射的 - 有几个大写字母映射到同一个小写字母,而且几个小写字母映射到同一个大写字母。一些小写字母甚至映射到多个大写字母(如德语ß => SS)。此外,String.equalsIgnoreCase 不使用特定于区域设置的大小写规则,而 String.toLowerCasetoUpperCase 使用。短版——它比大多数人认为的要复杂,每个版本都可以产生令人惊讶的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2014-06-20
    • 2011-06-22
    • 2016-05-03
    • 2016-09-02
    • 2016-01-29
    相关资源
    最近更新 更多