问题陈述:我有一个输入数组(即excludeStudyName
)和我有一个响应数组,我试图获取不包含输入数组中给定字符串的元素。
输入数组值:["Inflammation","Perf","Test_Study"]
获取响应中所有值的代码包含输入数组,
import groovy.json.JsonSlurper;
def fetchedStudyName = []
1.upto(vars.get('studyNameFetched_matchNr') as int, { index ->
fetchedStudyName.add(vars.get('studyNameFetched_' + index))
});
String tempExcludeStudyName = vars.get('excludeStudyName');
def excludeStudyName = new JsonSlurper().parseText(tempExcludeStudyName);
def valid = fetchedStudyName.findAll { a ->
excludeStudyName.any {a.contains(it)}
}
这是工作正常,我得到48个值,其中包含。但我想要不包含这个值的。
我尝试了excludeStudyName.any {!a.contains(it)}
和excludeStudyName.any {!(a.contains(it))}
,它正在打印响应数组中的所有值。
但不起作用。怎么修?
4条答案
按热度按时间ttcibm8c1#
如果你想从
fetchedStudyName
中删除所有存在于excludeStudyName
中的元素,你可以这样做:更多信息:
jk9hmnmh2#
你很接近了:
应该工作。
如果
excludeStudyName
是一个很大的列表,你应该考虑将它改为一个set来加速contains(a)
:ftf50wuq3#
这个方法如何
对你的代码做一个小改动
fiei3ece4#
您当前的代码获取所有与excludeStudyName匹配的值,并以valid返回它们。如果您的目标是获取与excludeStudyName不匹配的值,那么这里有一些选项。