可以以某種方式告訴array.contains()方法不使查找大小寫敏感嗎?數組包含()而不區分大小寫查找?
List<String> data = Arrays.asList(
"one", Two", "tHRee"); //lots of entries (100+)
data.contains("three");
可以以某種方式告訴array.contains()方法不使查找大小寫敏感嗎?數組包含()而不區分大小寫查找?
List<String> data = Arrays.asList(
"one", Two", "tHRee"); //lots of entries (100+)
data.contains("three");
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));
}
@membersound - 您如何在這種情況下使用equalsIgnoreCase? – 2015-11-09 23:04:07
它會要求你寫你自己的方法。 自定義指針:
進行比較不區分大小寫一定要將任何toLowerCase或toUpperCase的兩個參數和當前元素。
List list; 公共布爾包含(字符串str){
for(int i=0;i<list.size();i++){
if(list.elementAt(i).toLowerCase().Equals(str.toLowerCase())) return true;
}
return false;
}
不是一個有效的答案。您將'str'轉換爲小寫N次(對於'list'的每個元素都是一次),並且您每次調用此方法時都將'list'的每個項目轉換爲小寫。如果您要編寫自己的方法,只需使用'equalsIgnoreCase'並跳過所有的分配。 – 2016-01-04 19:26:27
我猜你的意思是'List.contains()' – m0skit0 2013-03-07 11:16:52
轉換一切插入'data'和仰視之前之前爲小寫? – NPE 2013-03-07 11:17:24
http://stackoverflow.com/questions/8751455/arraylist-contains-case-sensitivity – 2013-03-07 11:18:02