将字符串中的变量替换为实际值-Groovy

时间:2019-07-02 02:26:52

标签: java string groovy

在Groovy中,

考虑一个变量“ ssn”,其值由用户输入。

def ssn = <SSN captured via user input>

我正在创建字符串“有效载荷”形式的查询,其中用户输入的ssn应该替换字符串中的ssn。

String payload='{"<Some Database Query>","Variables"{"Id":"${ssn}"}}';

上述字符串有什么问题?字符串中的ssn不会替换为通过用户输入捕获的ssn。 “ $ {ssn}”不是正确的语法来捕获字符串中的变量值吗?

1 个答案:

答案 0 :(得分:1)

在单引号字符串内,您不能进行字符串插值。您需要将外部字符串用双引号引起来。由于您想在值中嵌入双引号,因此最简单的方法是使用三重双引号("""...""")。

请参阅以下内容:

groovy:000> ssn = 'some captured input'
===> some captured input
groovy:000> payload = '{"<Some Database Query>","Variables"{"Id":"${ssn}"}}'
===> {"<Some Database Query>","Variables"{"Id":"${ssn}"}}
groovy:000> 
groovy:000> payload = """{"<Some Database Query>","Variables"{"Id":"${ssn}"}}""" 
===> {"<Some Database Query>","Variables"{"Id":"some captured input"}}