用Groovy替换模板中的字符串

时间:2015-07-10 08:36:02

标签: string groovy

我有一个文本文件,用作"模板"看起来像这样:

[...]
<data>${payload}</data>
[...]

在Groovy脚本中,我现在要加载此模板,并用脚本中的特定值替换${payload}

伪代码:

def payload = "Hello world"
def f = new File(filename)
println f.text

结果将是:

<data>Hello world</data>

我看过Groovy模板,但我真的没有。

2 个答案:

答案 0 :(得分:2)

你确实可以使用groovy模板引擎,它允许你有一些参数化的文本。您定义一个结构,然后用您想要的信息填充它

    def text = '<h1>${title}</h1><data>${payload}</data>'

    def binding = ["title":"My Title", "payload":"Hello world"]

    def engine = new groovy.text.SimpleTemplateEngine()
    def template = engine.createTemplate(text).make(binding)
    println template.toString() // <h1>My Title</h1><data>Hello world</data>

答案 1 :(得分:0)

String templateInterpolator(String text, Map model) {
  new groovy.text.SthenimpleTemplateEngine()
    .createTemplate(text)
    .make(model)    
    .toString()
}

然后:

assert templateInterpolator('Hello ${name}', [name: 'World']) == 'Hello World'

另一个例子:

assert templateInterpolator('''
Dear ${env.receiver}, 
This is about ${env.topic}
Best Regards,
${env.sender}

''', [env:[receiver: 'Ali', sender: 'Omar', topic: 'My love to you']]) == '''
Dear Ali, 
This is about My love to you
Best Regards,
Omar

'''