在groovy中,如何分配多行字符串WITHOUT ESCAPING斜杠(\)和没有插值

时间:2011-03-15 11:26:44

标签: groovy escaping multiline heredoc

在groovy中,如果我想要多行字符串而不插值和WITHOUT ESCAPING

该怎么办

类似的东西:

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

println var2;

应该打印完全相同,如:

  

adakldjkadj \ ^ MK
   如@哒\ KL#DFD#$#
   $ {VAR1}
   d3& 657 \ 7fdsfsf

但是,$ {var1}尚未展开,并且不需要转义\并且它是多行字符串
然后如何在GROOVY中分配这个HEREDOC STRING。这在bash脚本,ruby,perl等中是可能的。

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

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

如何在groovy中做到这一点?

3 个答案:

答案 0 :(得分:2)

使用'''之类的三重单引号而不是双引号来避免多行字符串中的变量插值。

答案 1 :(得分:1)

这是不可能的,请参见此处:https://issues.apache.org/jira/browse/GROOVY-411

答案 2 :(得分:1)

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

就\而言,它始终是特殊字符的java / groovy分隔符,所以你总是要逃避它。

编辑:看起来他们正在为1.8工作,或者它已经在1.8。我目前只运行1.7,所以无法测试或提供代码示例。