为什么这个字符串→;列表→;地图转换不需要';我不能在Groovy中工作
我输入了类型为的数据为什么这个字符串→;列表→;地图转换不需要';我不能在Groovy中工作,groovy,data-conversion,Groovy,Data Conversion,我输入了类型为的数据 abc 12d uy 76d ce 12a 行由\n分隔,值由\t分隔 数据来自shell命令: brlist = 'mycommand'.execute().text 然后我想把它放到地图上: brmap = brlist.split("\n").collectEntries { tkns = it.tokenize("\t") [ (tkns[0]): tkns[1] ] } 我也试过了
abc 12d
uy 76d
ce 12a
行由\n
分隔,值由\t
分隔
数据来自shell命令:
brlist = 'mycommand'.execute().text
然后我想把它放到地图上:
brmap = brlist.split("\n").collectEntries {
tkns = it.tokenize("\t")
[ (tkns[0]): tkns[1] ]
}
我也试过了
brmap = brlist.split("\n").collectEntries {
it.tokenize("\t").with { [ (it[0]): it[1] ] }
}
两种方法都得到了相同的结果,这是一个只有一个条目的映射:
brmap.toString()
# prints "[abc:12d]"
为什么只有输入数据的第一行最终出现在映射中?您的代码工作正常,这意味着输入字符串
brlist
与您所说的不同
你确定那就是你所拥有的吗?尝试打印brlist
,然后在collectionentries
另一方面,这与代码的作用相同:
brlist.split('\n')*.split('\t')*.toList().collectEntries()
或者您可以尝试(如果是空格而不是选项卡,则两者都可以)
您的代码正常工作,这意味着输入字符串
brlist
与您所说的不同
你确定那就是你所拥有的吗?尝试打印brlist
,然后在collectionentries
另一方面,这与代码的作用相同:
brlist.split('\n')*.split('\t')*.toList().collectEntries()
或者您可以尝试(如果是空格而不是选项卡,则两者都可以)
此代码有效
// I use 4 spaces as tab.
def text = 'sh abc.sh'.execute().text.replaceAll(" " * 4, "\t")
brmap = text.split("\n").collectEntries {
tkns = it.tokenize("\t")
[(tkns[0]) : tkns[1]]
}
assert[abc:"12d", uy:"76d", ce:"12a"] == brmap
abc.sh
#!/bin/sh
echo "abc 12d"
echo "uy 76d"
echo "ce 12a
另外,我认为您的groovy代码是正确的。可能您的mycommand
有问题。此代码有效
// I use 4 spaces as tab.
def text = 'sh abc.sh'.execute().text.replaceAll(" " * 4, "\t")
brmap = text.split("\n").collectEntries {
tkns = it.tokenize("\t")
[(tkns[0]) : tkns[1]]
}
assert[abc:"12d", uy:"76d", ce:"12a"] == brmap
abc.sh
#!/bin/sh
echo "abc 12d"
echo "uy 76d"
echo "ce 12a
另外,我认为您的groovy代码是正确的。也许你的
mycommand
有问题。好的,谢谢你的提示,这是Jenkins中的一个bug:
这里已经提到过:好的,谢谢你的提示,这是Jenkins中的一个bug:
前面已经提到过:代码无法运行。我正在使用Jenkins Groovy管道脚本<代码>groovy.lang.MissingMethodException:没有方法的签名:[Ljava.lang.String;.split()适用于参数类型:(java.lang.String)值:[]可能的解决方案:split(groovy.lang.Closure)、wait()、init()、sort()、tail()、toList()该代码没有运行。我正在使用Jenkins Groovy管道脚本。
Groovy.lang.MissingMethodException:没有方法签名:[Ljava.lang.String;.split()适用于参数类型:(java.lang.String)值:[]可能的解决方案:split(Groovy.lang.Closure)、wait()、init()、sort()、tail()、toList()