检查String是否包含String - Java

时间:2018-02-08 11:58:55

标签: java

我有一个带有一些标签的String []。

在我的示例中:image.getRepoTags[0] = clone_envx:img1imageTag = img1

我的代码返回false。为什么?如何查看imageTag is in String[] image.getRepoTags()?

 if(Arrays.asList(image.getRepoTags()).contains(imageTag))
       return true;
  else
       return false;

3 个答案:

答案 0 :(得分:2)

将数组转换为List无法帮助您满足您的需求,因为您希望在String元素内搜索。

您可以迭代数组元素,并在一个元素包含imageTag时停止:

return  Arrays.stream(arr)
              .anyMatch(s -> s.contains("imageTag"));

答案 1 :(得分:2)

list.contains()string.contains()之间存在差异。这是你的问题。第一个检查是否存在整个对象的完全匹配,而第二个检查字符串的实际内容。

list.contains()的示例:

new String[]{"test", "test2", "img1"}

包含实际的字符串对象img1(true)。如果我们将数组更改为

new String[]{"test", "test2", "clone_envx:img1"}

然后它不包含完美匹配(false)。

Java 7解决问题的方法:

for (String str : image.getRepoTags()) {
    if(str.contains(imageTag)) {
        return true;
    }
}
return false;

第二次返回应该只在迭代整个列表后发生。这就是循环之后的原因。

答案 2 :(得分:0)

您应该循环或流式传输标签列表,并检查它们中是否包含您的imageTag变量。

例如在Java 8中:

    boolean anyMatch = Arrays.asList(image.getRepoTags()).stream()
                            .anyMatch(tag -> tag.contains("img1"));