我有这个
def url = "http://myurl/".toURL().text
def root = new XmlSlurper().parseText(url)
def namn = root.data.'content-item'.'**'.findAll{ node-> node.name() == 'resourceURI' }*.text()
def mylist = []
namn.each{
mylist << it
}
println mylist
def namn2 = root.data.'content-item'.'**'.findAll{ node-> node.name() == 'relativePath' }*.text()
def mylist2 = []
namn2.each{
mylist2 << it
}
println mylist2
这将是这个的输出:
[http://myurl/, http://myurl/]
[/Sixten/1.1.0.235/, /Sixten/1.1.0.331/]
我知道要将其交换为
[Sixten-1.1.0.235.nupkg, Sixten-1.1.0.331.nupkg]
然后附加到第一个列表,这样就会产生这样的结果
[http://myurl/Sixten-1.1.0.235.nupkg, http://myurl/Sixten-1.1.0.331.nupkg]
怎么样?
答案 0 :(得分:2)
您不需要执行each
即可将值放入列表中......您已有列表:
def myList = root.data.'content-item'
.'**'
.findAll{ node-> node.name() == 'resourceURI' }
*.text()
def myList2 = root.data.'content-item'
.'**'
.findAll{ node-> node.name() == 'relativePath' }
*.text()
然后,要操纵myList2
,您只需要:
myList2 = myList2*.getAt(1..-2)*.replaceAll('/', '-')*.plus('.nupkg')
要将网址附加到开头只需要:
[myList,myList2].transpose().collect { a, b -> a + b }
答案 1 :(得分:1)
这个怎么样:
def myList = ['http://myurl/', 'http://myurl/']
def myList2 = ['/Sixten/1.1.0.235/', '/Sixten/1.1.0.331/']
myList2 = myList2.collect { list2Entry ->
list2Entry[1..-2].replaceAll('/', '-') + '.nupkg'
}
def lst = []
myList.eachWithIndex{ txt, idx ->
lst << txt + myList2[idx]
}
println lst
打印: [http://myurl/Sixten-1.1.0.235.nupkg,http://myurl/Sixten-1.1.0.331.nupkg]
首先,在收集器内部,通过使用[1 ..- 2]删除字符串的第一个和最后一个字符来删除前导和尾部斜杠。然后使用replaceAll替换为字符串中间的斜杠,并使用字符串连接添加.nupkg。
在eachWithIndex中,myList中的每个字符串都与myList2中相同位置的字符串连接,结果字符串被添加到新创建的列表lst。