我有一个字符串列表(我从另一个方法获得)并且想要验证所有字符串中是否存在某个字符串。即如果列表是[“我的名字是林赛”,“我的名字是比利”,我的名字是约翰“]我正在测试看看所有字符串中是否存在”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的问题。
答案 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。