Wenn ich zwei String-Listen wie unten habe und eine neue String-Liste basierend auf startsWith
Logik erstellen möchte, wie kann ich das tun?Wie filtere ich zwei Listen und erstelle eine neue Liste
pathList = ["/etc/passwd/something.txt",
"/etc/fonts/fonts.conf"
"/var/www/foo.bar",
"/some/foo/path/one.txt"]
notAllowedPathList = ["/etc/fonts",
"/var",
"/path"]
newList = ["/etc/passwd/something.txt", "/some/foo/path/one.txt"]
newList
wird erstellt, indem in pathList
startsWith
jedes Element in newList
ob jedes Element zu sehen.
Also, von den oben pathList
, /etc/fonts/fonts.conf
und /var/www/foo.bar
entfernt werden, weil sie /etc/fonts
und /var
jeweils startWith.
kam ich mit unten, aber ich glaube, es wäre eine groovy Art und Weise sein, dies zu tun:
def newList = []
pathList.each {String fileName ->
notAllowedPathList.find { String notAllowed ->
if (fileName.startsWith(notAllowed)) {
return true
}
else {
newList << fileName
}
}
}
wow ich nicht 'wusste' kann 'any' vorangestellt werden. Kannst du mir bitte erklären, was es macht? – Anthony
'any' gibt true zurück, wenn ein Element der Sammlung, auf das es aufgerufen wird, einen truthigen Wert zurückgibt, wenn es an das closure-Argument übergeben wird –