【问题标题】:in groovy, how to assign multiline string WITHOUT ESCAPING slash(\) and without interpolation在常规中,如何在没有转义斜杠(\)且没有插值的情况下分配多行字符串
【发布时间】:2011-07-15 17:23:15
【问题描述】:

在 groovy 中,如果我想要多行字符串没有插值且没有转义,该怎么办

类似:

    var1="hello hello"   
    var2="""/   
      adakldjkadj\^mk   
      as@da\kl#DFD#$#   
      ${var1}   
      d3&657\7fdsfsf   
    /"""   

println var2;

应该打印完全一样的,比如:

adakldjkadj\^mk
as@da\kl#DFD#$#
${var1}
d3&657\7fdsfsf

也就是说,${var1} 没有被扩展,并且不需要转义 \ 并且它是多行字符串
那么如何在 Groovy 中分配这个 HEREDOC 字符串。这在 bash 脚本、ruby、perl 等中是可能的。

在 ruby​​ 中,它表示为(注意分隔符周围的引号,例如:'EOL')

a = <<'EOL'   
  adakldjkadj\^mk   
  as@da\kl#DFD#$#   
  yes ${var1}   
  d3&657\7fdsfsf   
EOL   

如何在 groovy 中做到这一点?

【问题讨论】:

    标签: groovy escaping multiline heredoc


    【解决方案1】:

    使用''' 等三重单引号代替双引号,以避免多行字符串中的变量插值。

    【讨论】:

      【解决方案2】:

      这是不可能的,请看这里:https://issues.apache.org/jira/browse/GROOVY-411

      【讨论】:

        【解决方案3】:

        使用单引号,您可以更接近,但仍然不是您要查找的内容。它不会再扩展 ${var1}。

        就 \ 而言,它始终是特殊字符的 java/groovy 分隔符,因此您始终必须对其进行转义。

        编辑:看起来他们正在为 1.8 开发此功能,或者它已经在 1.8 中。我目前只运行 1.7,因此无法测试或提供代码示例。

        【讨论】:

          猜你喜欢
          • 2015-09-14
          • 2019-10-07
          • 2017-04-13
          • 2023-03-06
          • 2018-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-23
          相关资源
          最近更新 更多