如何使用部分字符检查列表中是否存在元素

时间:2014-12-26 10:11:12

标签: java

我有下面的arraylist

{abc/*, abc/xyz/*}

是否可以找到列表中是否存在abc / xyz?

我尝试使用contains()但是当提供的全文如abc / xyz / *

时它返回true

4 个答案:

答案 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,如GUAVAApache 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
    }