gpt4 book ai didi

在定义插值变量之前定义字符串时的 Groovy 字符串插值

转载 作者:行者123 更新时间:2023-12-04 14:20:40 27 4
gpt4 key购买 nike

我有一个类似的问题:

Groovy string interpolation with value only known at runtime

可以做些什么来完成以下工作:

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},并在这里处理它使用闭包,以及输入字段的定义。

我已经尝试过各种更改,在没有“${}”的闭包中定义消息,使用单引号或双引号,在字符串“消息”中的内插变量周围嵌入双引号等,我总是得到这个结果:

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

最佳答案

ernest_k 是对的,您完全可以使用模板引擎:

import groovy.text.SimpleTemplateEngine

def templatedMessage = new SimpleTemplateEngine().createTemplate('Today is ${date}, your id is: ${id}')

def date1 = '03/29/2019'
def id1 = '12345'

def result = { date, id -> templatedMessage.make(date: date, id: id)}
println(result(date1, id1))

关于在定义插值变量之前定义字符串时的 Groovy 字符串插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55423036/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com