в Groovy, как назначить многострочную строку БЕЗ ESCAPING слеш (\) и без интерполяции - PullRequest
4 голосов
/ 15 марта 2011

в groovy, что делать, если я хочу многострочную строку без интерполяции и БЕЗ ESCAPING

что-то вроде:

    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} НЕ был расширен, и экранирование \ не было необходимо, и это многострочная строка
ПОСЛЕ ТОГО, КАК НАЗНАЧИТЬ ЭТУ СТРОКУ HEREDOC В GROOVY.Это возможно в скриптах bash, ruby, perl и т. Д.

в ruby ​​это выражается как (обратите внимание на кавычки вокруг символов-разделителей, например: 'EOL')

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

как это сделатьэто в заводной?

Ответы [ 3 ]

2 голосов
/ 17 сентября 2015

Используйте тройные одинарные кавычки, например ''' вместо двойных, чтобы избежать интерполяции переменных в многострочных строках.

1 голос
/ 15 марта 2011

Вы можете стать ближе, но все же не то, что вы ищете, используя одинарные кавычки. Он больше не будет расширять $ {var1}.

Что касается \, это всегда разделитель java / groovy для специальных символов, поэтому вам всегда придется его избегать.

Edit: похоже, они работают над этим для 1.8, или это уже в 1.8. В настоящее время я использую только 1.7, поэтому не могу проверить или предоставить пример кода.

1 голос
/ 15 марта 2011

Это невозможно, см. Здесь: https://issues.apache.org/jira/browse/GROOVY-411

...