1

次のような 2 つのリストがあります。

def justNames = ["test", "test1"]
def namesWithNumber = ["test-1", "test-2", "test1-2"]

次の条件で、各ペアが justNames からの要素を 1 つと、namesWithNumber からの要素を 1 つ持つように、ペアのリストを作成したいと考えています。justNames の要素は、namesWithNumber の要素のハイフンの前の部分と完全に一致する必要があります。そう:

def pairs = [["test", "test-1"], ["test1", "test1-2"], ["test", "test-2"]]

リストをループする最良の方法が何であるかを理解するのに苦労しています。私の実際のコードでは、justNames は非常に大きく、namesWithNumber ははるかに小さいです。ペアのリストを作成するグルーヴィーな方法を提案できる人はいますか? それが重要または役立つ場合、justNames と namesWithNumber は、次のような正規表現を使用して単一のリストから作成されました。

def testList = ["test", "test-1", "test1", "test-2", "test1-2"]
def justNames = []
def namesWithNumber = []
testList.each {
    if (it =~ /-\d$/) {
        namesWithNumber << it
    } else {
        justNames << it
    }
}

ありがとう!

4

1 に答える 1

2
[justNames, namesWithNumber].combinations().findAll{it[0] == it[1].split(/-/)[0]}
于 2013-07-19T01:41:01.657 に答える