当前位置: 首页 > 知识库问答 >
问题:

如何在Jenkins Groovy Pipeline中创建和循环字符串的ArrayList

阚乐湛
2023-03-14

正如标题中所述,我试图循环Jenkins Groovy管道脚本中字符串的ArrayList(使用脚本化管道语法)。让我把整个“问题”告诉你。

我从一串用空格分隔的文件系统位置开始:“/var/x /var/y /var/z......”就像这样。我循环这个字符串,将每个字符添加到一个tempstring。然后当我到达一个空格时,我将该临时字符串添加到数组中并重新启动。这里有一些代码显示了我是如何做到这一点的:

def full_string = "/var/x /var/y /var/z"
def temp = ""
def arr = [] as ArrayList
full_string.each {
    if ( "$it" == " " ) {
      arr.add("$temp")           <---- have also tried ( arr << "$temp" )
      temp = ""
    } else {
      temp = "$temp" + "$it"
    }
}
 // if statement to catch last element

看,这个问题是,如果我以后在数组上循环,它会决定在每个单独的字符上循环,而不是像我希望的那样在整个/var/x字符串上循环。

我是Groovy新手,所以我在构建这个管道的过程中一直在学习。使用Jenkins版本2.190。1如果这有帮助的话。我已经查看了SO和Groovy文档,以及Jenkins上的管道语法文档。似乎找不到我一直在找的东西。我确信我的解决方案不是最优雅或最有效的,但我会先了解它是如何工作的,然后再尝试从中获得最大的性能。

我发现了这个问题,但这同样没有帮助:在Groovy中动态地向ArrayList添加元素。

编辑:我试图将旧的公司c-shell构建脚本翻译成詹金斯管道。我的初始字符串是我们所有节点上可用的环境变量,我也需要在管道中提供。

TL;DR-我需要能够从字符串中以空格分隔的值创建一个数组,然后能够在所述数组上循环,并且每个“元素”都是一个完整的字符串,而不是单个字符,这样我才能正确地运行管道步骤。

共有1个答案

周良弼
2023-03-14

试着在你的Jenkins脚本控制台(your.jenkins.url.yourcompany.com/script)运行这个:

def full_string = "/var/x /var/y /var/z"
def arr = full_string.split(" ")
for (i in arr) {
  println "now got ${i}"
}

结果:

now got /var/x
now got /var/y
now got /var/z
 类似资料:
  • 我用字符串变量在java中创建了一个for循环。我想向变量添加一个字符,直到该变量等于一组字符。我创建了for循环。控制台中没有显示错误。但是也没有输出”(我哪里错了?

  • 我正在制作一个程序,它从用户那里获取一个字符串并用分隔符逐字分隔它,它几乎完成了。但是,在第一个完整循环之后,来自用户的下一个输入不会通过最后一个while循环。 下面是我要说的代码片段: 我想我需要在单词increment和print行周围再循环一次,并在输入中使用continue序列。hasNext()循环,因为这就是我使用int来运行类似程序的方式,但我不确定这将如何处理字符串。 有什么建议

  • 本文向大家介绍如何在Python中创建长的多行字符串?,包括了如何在Python中创建长的多行字符串?的使用技巧和注意事项,需要的朋友参考一下 为了创建多行字符串,我们使用三对来代替使用一对单引号/双引号。例如,  这将给出输出:  请注意,您不能使用此符号插入字符串。此符号也用于在Python中定义文档字符串。

  • 问题内容: 我正在使用ya-csv库,它希望将文件或流作为输入,但是我有一个字符串。 如何将该字符串转换为Node中的流? 问题答案: 从节点12.3开始,stream.Readable有一个方法可以轻松地从任何可迭代对象(包括数组文字)创建流:

  • 我需要将字符串转换为JSONObject

  • 本文向大家介绍如何从Java ArrayList创建字符串?,包括了如何从Java ArrayList创建字符串?的使用技巧和注意事项,需要的朋友参考一下 要将ArrayList的内容转换为String,创建一个StringBuffer对象,将ArrayList的内容附加到该对象,最后使用toString()方法将StringBuffer对象转换为String 。 示例 输出结果