在groovy中,如何在不转义斜杠(\)和不插值的情况下指定多行字符串

在groovy中,如何在不转义斜杠(\)和不插值的情况下指定多行字符串,groovy,escaping,multiline,heredoc,Groovy,Escaping,Multiline,Heredoc,在groovy中,如果希望多行字符串不带插值和转义,该怎么办 比如: var1="hello hello" var2="""/ adakldjkadj\^mk as@da\kl#DFD#$# ${var1} d3&657\7fdsfsf /""" println var2; 打印内容应与原样完全相同,如: adakldjkadj\^mk as@da\吉隆坡#DFD#$#

在groovy中,如果希望多行字符串不带插值和转义,该怎么办

比如:

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

println var2;
打印内容应与原样完全相同,如:

adakldjkadj\^mk
as@da\吉隆坡#DFD#$#
${var1}
d3&657\7FDSFSFSF

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

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


a=这是不可能的,请参见此处:

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

对于\,它始终是用于特殊字符的java/groovy分隔符,因此您必须始终转义它

编辑:看起来他们正在为1.8版做这个,或者已经在1.8版了。我目前只运行1.7,因此无法测试或提供代码示例


使用三个单引号,如
'
,而不是双引号,以避免多行字符串中的变量插值

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