问题描述
|
我正在使用groovy扩展传统脚本系统。源脚本是\“ java-like \”,因此它几乎经过少量预处理就可以解析为普通脚本。
我正在使用invokeMethod()和missingMethod()传递旧代码,从而使我能够使用闭包和其他常规功能来增强脚本。但是,原始脚本使用\“ $ foo \”类型的字符串来引用变量。当遗漏方法被missingMethod()捕获时,我需要它不将该字符串评估为GString,而只是逐字输出。这有可能吗?
解决方法
有两种逃避$ foo的方法:
将\'$ \'转义为\'\\ $ \'
使用\'代替\“作为字符串定界符
例:
def test = \"bad\"
def s0 = \"$test\"
def s1 = \"\\$test\"
assert s1 != s0
def s2 = \'$test\'
assert s2 == s1
println s0
println s1
println s2
所以我想你必须使用预处理器才能转义字符串