Java 数组包含()不区分大小写的查找?
我能告诉array.contains()方法不要使查找区分大小写吗Java 数组包含()不区分大小写的查找?,java,arrays,Java,Arrays,我能告诉array.contains()方法不要使查找区分大小写吗 List<String> data = Arrays.asList( "one", Two", "tHRee"); //lots of entries (100+) data.contains("three"); List data=Arrays.asList( “一”、“二”、“三”);//大量条目(100+) 数据。包含(“三”); 包含只需检查列表中是否存在对象。因此不能在此处进行不区分大小写的查找,因
List<String> data = Arrays.asList(
"one", Two", "tHRee"); //lots of entries (100+)
data.contains("three");
List data=Arrays.asList(
“一”、“二”、“三”);//大量条目(100+)
数据。包含(“三”);
包含
只需检查列表中是否存在对象。因此不能在此处进行不区分大小写的查找,因为“三”与“三”是不同的对象
解决这个问题的一个简单方法是
public boolean containsCaseInsensitive(String s, List<String> l){
for (String string : l){
if (string.equalsIgnoreCase(s)){
return true;
}
}
return false;
}
Java 8+版本:
public boolean containsCaseInsensitive(String s, List<String> l){
return l.stream().anyMatch(x -> x.equalsIgnoreCase(s));
}
public boolean containsCaseSensitive(字符串s,列表l){
返回l.stream().anyMatch(x->x.equalsIgnoreCase);
}
它将要求您编写自己的contains()
方法。
自定义包含的指针()
:
for(inti=0;我猜您的意思是List.contains()
在插入数据之前和查找之前,将所有内容转换为小写?@yaens这是.Net而不是Java。重复的是.Net而不是Java。停止投票:xit不是重复的。谁应该解决这个问题?@membersound-你是如何在这种情况下使用equalsIgnoreCase的?@kishanlanki-我很确定它可以工作。什么对你不起作用r您?不是一个有效的答案。您正在将str
转换为小写N次(对于列表的每个元素一次),每次调用此方法时,您都会将列表
中的每一项转换为小写。如果您在编写自己的方法时遇到麻烦,只需使用equalsIgnoreCase
并跳过所有分配。
public boolean containsCaseInsensitive(String s, List<String> l){
return l.stream().anyMatch(x -> x.equalsIgnoreCase(s));
}
for(int i=0;i<list.size();i++){
if(list.elementAt(i).toLowerCase().Equals(str.toLowerCase())) return true;
}
return false;
}