在Groovy中,如何从列表中只提取匹配的字符串?

cwtwac6a  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(154)

在我的groovy脚本中,我有一个如下所示的列表

subList = ["foo", "bar", "baz"]

和具有以下内容文本文件master_list.txt

MASTER_STRING="ping:123 foo:321 pong:999 bar:888"
OTHER_STRING=helloWorld

我需要从MASTER_STRING中获取唯一匹配的项,因此从上面的示例中,我需要获取类似["foo:321", "bar:888"]的列表
我对groovy很陌生,如果在MASTER_LIST中找到了匹配的子字符串,我可以找到,但如何提取所需的字符串作为列表呢?

props = readProperties file: "master_list.txt"
boolean exists = false
if (props.containsKey('MASTER_STRING')) {
   def masterList = props.MASTER_STRING.split(/ /)
   exists = masterList.findAll { a ->
       subList.any { a.contains(it)}
   }
}
if (exists) {
   println "at least one item exists" // Here I like to print ["foo:321", "bar:888"]
}
8yoxcaq7

8yoxcaq71#

显示它没有阅读文件,而不是有2个列表。

masterList= ['aaa:123','bbb:002','ggg:003']
subList = ['aaa:', 'bbb:']
println masterList.findAll {
   a -> subList.any { a.contains(it)}
}

打印[aaa:123, bbb:002],这是我想要的,我在我的问题中过于复杂了。谢谢@马特的评论。

相关问题