问题描述
|
我定义了以下变量:
def VAL1 = \'foo\'
def VAL2 = \'bar\'
def s2 = \'hello ${VAL1},please have a ${VAL2}\'
使这种替代工作最简单的方法是什么?
我如何从s2
构建一个GString并进行评估?
(VAL和s2是从数据库加载的,此代码段仅用于说明我的问题。)
解决方法
如果可以将变量放入Map中,则可以使用
SimpleTemplateEngine
?
import groovy.text.SimpleTemplateEngine
def binding = [ VAL1:\'foo\',VAL2:\'bar\' ]
def template = \'hello ${VAL1},please have a ${VAL2}\'
println new SimpleTemplateEngine().createTemplate( template ).make( binding ).toString()
编辑
您可以使用绑定而不是地图,因此在groovyconsole中可以使用以下功能:
// No def. We want the vars in the script\'s binding
VAL1 = \'foo\'
VAL2 = \'bar\'
def template = \'hello ${VAL1},please have a ${VAL2}\'
// Pass the variables defined in the binding to the Template
new SimpleTemplateEngine().createTemplate( template ).make( binding.variables ).toString()
, 以及:
def VAL1 = \'foo\'
def VAL2 = \'bar\'
def s2 = \"hello ${VAL1},please have a ${VAL2}\".toString()
?
注意:请注意双引号