关于java:Array contains()是否不区分大小写?

Array contains() without case sensitive lookup?

本问题已经有最佳答案,请猛点这里访问。

我能以某种方式告诉array.contains()方法不区分大小写吗?

1
2
3
4
List<String> data = Arrays.asList(
 "one", Two","tHRee"); //lots of entries (100+)

data.contains("
three");


contains仅检查列表中是否存在对象。因此,您不能在此处进行不区分大小写的查找,因为"三"与"三"是不同的对象。

解决这个问题的简单方法是

1
2
3
4
5
6
7
8
public boolean containsCaseInsensitive(String s, List<String> l){
     for (String string : l){
        if (string.equalsIgnoreCase(s)){
            return true;
         }
     }
    return false;
  }

然后

1
containsCaseInsensitive("three", data);

Java 8版本:

1
2
3
public boolean containsCaseInsensitive(String s, List<String> l){
        return l.stream().anyMatch(x -> x.equalsIgnoreCase(s));
    }


这将要求您编写自己的contains()方法。
自定义contains()的指针:

  • 遍历列表中的所有元素。
  • 将参数字符串与其中的所有值进行比较
  • 要使比较不区分大小写,请确保对BOTH参数和当前元素应用toLowerCase或toUpperCase中的任何一个。

    列表列表;
    公共布尔包含(String str){

    1
    2
    3
    4
    5
       for(int i=0;i<list.size();i++){
           if(list.elementAt(i).toLowerCase().Equals(str.toLowerCase())) return true;
       }
    return false;
    }