Groovy:动态字符串中的可变替换

sfu*_*ger 15 groovy templates

我目前在groovy中面临变量替换相关的问题.虽然这非常简单:

Map map = [s1:"Hello", s2:"World"]
println "${map.s1} ${map.s2}!" // "Hello World!"
Run Code Online (Sandbox Code Playgroud)

由于这有效,我很确定这样的东西应该也能正常工作:

Map map = [s1:"Hello", s2:"World"]
def dynamic = loadStringFromFile();

println "${dynamic} ${dynamic.class}" // "${s1} ${s2}! (java.lang.String)"

// now the voodoo part
println applyVoodoo(dynamic, map) // "Hello World!"
Run Code Online (Sandbox Code Playgroud)

有人知道怎么做这个吗?

干杯

Joh*_*ner 12

您通常会使用Groovy模板执行此操作.


sep*_*p2k 7

dynamic.replaceAll(/\$\{(\w+)\}/) { m, k -> map[k] }
Run Code Online (Sandbox Code Playgroud)