如何使用串插在Groovy的多行字符串?

问题描述 投票:23回答:3

在Groovy中,我有一个多行字符串,用'''定义,在我需要使用插值,以取代一些其他变量。

我所有的努力,我不能得到它的工作 - 我想我需要逃避的东西,我很想念它。

下面是一些示例代码:

def cretanFood = "Dakos" 
def mexicanFood = "Tacos"
def bestRestaurant = ''' 
${mexicanFood} & ${cretanFood}
'''
print bestRestaurant

目前,该电源输出:

${mexicanFood} & ${cretanFood}

而我显然会想到:

Tacos & Dakos 

(注 - 我宁愿不要在连接字符串)

groovy string-interpolation
3个回答
36
投票

在Groovy中,单引号被用来创建不可改变的字符串,就完全像Java那样用双引号。

当您在Groovy中使用双引号您指示运行时,你打算创建一个可变的字符串或Groovy字符串(GString的简称)。您可以使用可变插值可变字符串,或者你可以把它作为一个经常性普通Java字符串。

这种行为延伸到多行字符串版本;三重单引号的使用产生的不可变多行的字符串,而三重双引号创建一个Groovy字符串。


39
投票

除了使用'''GStringmulti-line string使用"""

def cretanFood     = "Dakos"  
def mexicanFood    = "Tacos"
def bestRestaurant = """${mexicanFood} & ${cretanFood}"""
print bestRestaurant​

GString封闭在'''将不能够解决placeholder - $。您可以在标题和字符串汇总表块下Groovy Documentation更多细节。


0
投票

这也可能是添加变量走出三重引号的一个好主意,只是将它们连接起来与内容。像这样的事情对你有引号内的内容复杂的情况:

def bestRestaurant = mexicanFood + """ & """ + cretanFood

由于你的情况很简单,这应该做得一样好:

def bestRestaurant = mexicanFood + " & " + cretanFood
© www.soinside.com 2019 - 2024. All rights reserved.