迭代字符串列表以查看列表中的所有字符串中是否存在特定字符串(Java / Groovy)

时间:2018-01-15 22:35:01

标签: java loops groovy

我有一个字符串列表(我从另一个方法获得)并且想要验证所有字符串中是否存在某个字符串。即如果列表是[“我的名字是林赛”,“我的名字是比利”,我的名字是约翰“]我正在测试看看所有字符串中是否存在”name“,该方法应该返回true。但是如果列表是[“我的名字是林赛”,“我的名字是比利,”我是约翰“],该方法应该返回false,因为”name“不在最后一个字符串中。 (我真的很喜欢编程,如果我没有使用正确的术语/符号系统,我会道歉)。无论如何,这是我现在拥有的:

def verifyEachSuggestionContainsValueOf(String value) {
        List<String> customerMessageSuggestions = customerMessageAutoSuggestions()
        boolean stringPresent = false
        for (String suggestion : customerMessageSuggestions) {
            if (suggestion.contains(value)) {
                stringPresent = true
            }else{
                return false
            }
        }
        return stringPresent
    }

这很有效,但我觉得必须有一种更清洁的方法。任何建议将不胜感激。谢谢!

***编辑修复了在For循环中返回stringPresent的问题。

2 个答案:

答案 0 :(得分:3)

纯Java:

return list.stream().allMatch(s -> s.contains("name"));

在Groovy中:

return list.every { it.contains("name") }

答案 1 :(得分:0)

def verifyEachSuggestionContainsValueOf(String value) {
    List<String> customerMessageSuggestions = 
        customerMessageAutoSuggestions()
    for (String suggestion : customerMessageSuggestions) {
        if (!suggestion.contains(value)) {
            return false
    }
    return true
}

布尔变量的声明是不必要的。如果任何字符串不包含所需的子字符串,则该方法可以立即返回false并退出该方法。否则,它返回true。