我有一个类似的问题:
可以做些什么来完成以下工作:
def message = 'Today is ${date}, your id is: ${id}';
def date1 = '03/29/2019'
def id1 = '12345'
def result = {date, id -> "${message}"}
println(result(date1, id1))
所以我想取一个已经在别处定义的字符串(为简单起见,我在这里将其定义为“消息”),已经嵌入了插入的 ${date} 和 ${id} ,并使用闭包在此处处理它,带有输入字段的定义。
我已经尝试了各种更改,在没有“$ {}”的闭包中定义消息,使用单引号或双引号,在字符串'message'中的插值变量周围嵌入双引号等,我总是得到这个结果:
Today is ${date}, your id is: ${id}
但我想说:
Today is 03/29/2019, your id is: 12345
以下方法有效,但我不确定这是否是最好的方法:
def message = '"Today is ${date}, your id is: ${id}"'
def sharedData = new Binding()
def shell = new GroovyShell(sharedData)
sharedData.setProperty('date', '03/29/2019')
sharedData.setProperty('id', '12345')
println(shell.evaluate(message))
http://docs.groovy-lang.org/latest/html/documentation/guide-integrating.html