5

在 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中做到这一点?

4

3 回答 3

3

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

于 2015-09-17T07:29:04.770 回答
1

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

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

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

于 2011-03-15T12:12:53.307 回答
1

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

于 2011-03-15T11:38:51.280 回答