2011-04-27 88 views
3

我正在使用groovy擴展舊版腳本系統。源腳本是「類似於java」的,所以它主要是作爲一個常規腳本進行解析並進行一些預處理。如何避免評估GString

我使用invokeMethod()和missingMethod()來傳遞遺留代碼,使我能夠使用閉包和其他常規功能來增強腳本。但是,原始腳本使用「$ foo」類型的字符串來引用變量。當遺留方法被missingMethod()捕獲時,我需要它不要將此字符串作爲GString進行計算,而只是逐字輸出它。這有可能以任何方式?

+0

我不確定我是否正確得到了這個結果,但爲什麼不在預處理步驟中轉義GStrings? – 2011-04-28 06:00:27

+0

您的建議,例如在預處理中轉義'$'是我到目前爲止所做的。 – 2011-04-28 08:13:57

回答

3

有逃跑的$ foo的雙向:

  1. 逃生的 '$' 爲 '\ $'
  2. 使用「,而不是」爲字符串分隔符

例如:

def test = "bad" 
def s0 = "$test" 
def s1 = "\$test" 
assert s1 != s0 
def s2 = '$test' 
assert s2 == s1 
println s0 
println s1 
println s2 

所以我想你必須使用你的預處理器才能逃脫你的字符串