【问题标题】:How to print Groovy list and keep the quotes?如何打印 Groovy 列表并保留引号?
【发布时间】:2018-04-06 09:07:13
【问题描述】:

我们有一个清单:

List test = ["a", "b", "c"]

我不想更改这个硬编码的列表,因为它有很多项目。

当像这样打印时:

println "${test}"

我们得到[a, b, c],但我想要["a", "b", "c"]

有什么建议吗?

【问题讨论】:

  • 您实际面临的问题是什么?
  • 将 groovy 命令作为字符串从 master 传递到 slave。
  • 你不能传递列表而不是字符串吗?
  • 是与否,我们将一个命令作为字符串传递给从节点以在那里执行。因此,当我们在主节点上循环遍历此列表时,一切正常,但是当在此字符串中定义循环时,它会尝试循环 [a, b, c] 而不是字符串列表。

标签: string list groovy concatenation


【解决方案1】:

您可以尝试将您的列表表示为String,方法是像这样加入所有元素:

List test = ["a", "b", "c"]

String listAsString =  "[\"${test.join('", "')}\"]"

println listAsString

输出

["a", "b", "c"]

它使用", "连接所有元素,并在字符串开头添加[",在字符串末尾添加"]

【讨论】:

  • 太棒了!谢谢。
【解决方案2】:

Groovy 有inspect() 用于更好 输出(更接近输入,但请注意,这不是序列化 Groovy 数据结构的正确方法):

Groovy Shell (2.5.0-beta-1, JVM: 1.8.0_152)
Type ':help' or ':h' for help.
----------------------------------------------------------------------------------------------
groovy:000> test = ["a", "b", "c"]
===> [a, b, c]
groovy:000> test.inspect()
===> ['a', 'b', 'c']

【讨论】:

  • When: println "${test.inspect()}" 我们仍然得到 [a, b, c]
  • 您使用什么 Groovy 版本? 2.4.12 返回显示的输出 @cfrick。
  • 我还没有 whitnessed 一个 groovy 版本,就是这样。最有可能的是其他东西将单引号去掉。
【解决方案3】:

您可以使用", " 加入列表中的项目,它应该会给您类似a", "b", "c 的内容。然后只需从左侧添加字符串 [" 并从右侧添加字符串 "] 即可获得所需的 - ["a", "b", "c"]。 请参阅下面的代码示例。

def List l = ["a","b","c"]
def String s = '["' + l.join('", "') + '"]'
print s

输出

["a", "b", "c"]

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多