在Groovy中,我有一个多行字符串,用'''
定义,我需要使用插值来替换其他一些变量。
尽管我付出了很多努力,但我无法让它发挥作用 - 我认为我需要逃避一些我缺失的东西。
以下是一些示例代码:
def cretanFood = "Dakos"
def mexicanFood = "Tacos"
def bestRestaurant = '''
${mexicanFood} & ${cretanFood}
'''
print bestRestaurant
目前,这输出:
${mexicanFood} & ${cretanFood}
虽然我显然希望:
Tacos & Dakos
(注意 - 我不想连接字符串)
答案 0 :(得分:35)
而不是使用'''
GString
或multi-line string
使用"""
def cretanFood = "Dakos"
def mexicanFood = "Tacos"
def bestRestaurant = """${mexicanFood} & ${cretanFood}"""
print bestRestaurant
GString
中附带的 '''
将无法解析placeholder - $
。您可以在标题字符串和字符串汇总表块下的Groovy Documentation中找到更多详细信息。
答案 1 :(得分:30)
在Groovy中,单引号用于创建不可变的字符串,就像Java使用双引号一样。
当您在Groovy中使用双引号时,您向运行时指示您打算创建可变String或Groovy String(简称GString)。您可以对可变字符串使用变量插值,也可以将其保留为常规纯Java字符串。
此行为扩展到多行String版本;使用三重单引号创建一个不可变的多行字符串,而三重双引号创建一个Groovy字符串。
答案 2 :(得分:0)
将变量添加到三重引号中,然后将它们与内容连接起来也是一个好主意。 对于引号中包含复杂内容的情况,类似这样:
def bestRestaurant = mexicanFood + """ & """ + cretanFood
由于您的情况很简单,因此也应该这样做:
def bestRestaurant = mexicanFood + " & " + cretanFood