我有下面的arraylist
{abc/*, abc/xyz/*}
是否可以找到列表中是否存在abc / xyz?
我尝试使用contains()但是当提供的全文如abc / xyz / *
时它返回true答案 0 :(得分:1)
包含arraylist中的方法将通过调用String上的equals方法来检查精确的字符串匹配,因此您无法使用contains方法。相反,您可以在String中使用startsWith方法,迭代列表并执行以下操作:
for (String str : stringList) {
if (str.startsWith("abc/xyz")) {//here even you could use contains if you want to find for your pattern anywhere within string.
System.out.println("I found the string");
break;
}
}
答案 1 :(得分:0)
仅包含全文的作品。您应该尝试使用String's indexOf()方法。循环列表并尝试
for (String element: list) {
if(element.indexOf("abc/xyz")>0){
return true;
}
}
答案 2 :(得分:0)
indexOf
可以提供帮助。除此之外matches()
也可以提供帮助。
for (String elem : lst) {
if (elem.matches("abc/xyz.*"))
return true;
}
答案 3 :(得分:0)
contains()方法检查全文,而不是正则表达式,您可以使用indexOf或Pattern API来匹配正则表达式,或者考虑其他API,如GUAVA
或Apache common utils
。
List<String> getStrings(List<String> list, String regex) {
List<String> result = new ArrayList<String>();
Pattern p = Pattern.compile(regex);
for (String str:list) {
if (p.matcher(str).matches()) {
result.add(str);
}
}
return result
}