数组包含()没有区分大小写的查找?

时间:2013-03-07 11:15:26

标签: java arrays

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

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

data.contains("three");

2 个答案:

答案 0 :(得分:32)

contains只需检查列表中是否存在对象。所以你不能在这里做一个不区分大小写的查找,因为“three”是一个与“Three”不同的对象。

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

public boolean containsCaseInsensitive(String s, List<String> l){
     for (String string : l){
        if (string.equalsIgnoreCase(s)){
            return true;
         }
     }
    return false;
  }

然后

containsCaseInsensitive("three", data);

Java 8+版本:

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

答案 1 :(得分:0)

它需要您编写自己的contains()方法。 自定义contains()的指针:

  1. 遍历列表中的所有元素。
  2. 将参数字符串与
  3. 中的所有值进行比较
  4. 使比较不区分大小写,请确保在BOTH参数和当前元素上应用任何toLowerCase或toUpperCase。

    列表清单;     public boolean contains(String str){

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