String 在groovy中将单词替换为$

String 在groovy中将单词替换为$,string,gradle,groovy,replace,String,Gradle,Groovy,Replace,我使用gradle构建文件中的以下groovy代码替换php文件中的单词: def str1="My application version is $app_version" def str2 = str1.replaceAll('$app_version','2016072601') println str2​ 我想用此方法中定义的数字替换$app_version,但不知何故它不起作用。我是否需要退出或执行任何特殊操作来执行此替换 带有双引号和$的字符串是gstring,它会触发。另外,接

我使用gradle构建文件中的以下groovy代码替换php文件中的单词:

def str1="My application version is $app_version" 
def str2 = str1.replaceAll('$app_version','2016072601')
println str2​

我想用此方法中定义的数字替换$app_version,但不知何故它不起作用。我是否需要退出或执行任何特殊操作来执行此替换

带有双引号和
$
的字符串是gstring,它会触发。另外,接收一个正则表达式作为第一个参数,
$
是正则表达式中的一个特殊字符,因此,您也需要双重转义

您可以使用单引号,也可以对
str1
中的
$
字符进行转义:

def str1='My application version is $app_version'
def str2 = str1.replaceAll('\\$app_version','2016072601')
assert str2 == 'My application version is 2016072601'

更新:稍微扩展字符串插值,它会用相同名称的变量值替换字符串中的
$
占位符(虽然不是立即,因为它首先创建了
GString
的实例)。它在Java中大致类似于此:

String str1 = "My application version is " + app_version;
因此,您可以在脚本中使用名为
app_version
的变量,而不是将变量替换为
replaceAll
,比如
def app_version=“2016072601”
(这有点像@BZ.的答案)



更新2:通过使用字符串插值(根据@BZ.的答案)或字符串连接,您不需要使用
replaceAll
,但需要一个名为
app\u version
的变量:

def app_version = '2016072601'
def str1 = "My application version is $app_version"
assert str1 == 'My application version is 2016072601'
def app_version = '2016072601'
def str1 = "My application version is " + app_version
assert str1 == 'My application version is 2016072601'
对于字符串连接,您还需要一个名为
app\u version
的变量:

def app_version = '2016072601'
def str1 = "My application version is $app_version"
assert str1 == 'My application version is 2016072601'
def app_version = '2016072601'
def str1 = "My application version is " + app_version
assert str1 == 'My application version is 2016072601'

带有双引号和
$
的字符串是gstring,它会触发。另外,接收一个正则表达式作为第一个参数,
$
是正则表达式中的一个特殊字符,因此,您也需要双重转义

您可以使用单引号,也可以对
str1
中的
$
字符进行转义:

def str1='My application version is $app_version'
def str2 = str1.replaceAll('\\$app_version','2016072601')
assert str2 == 'My application version is 2016072601'

更新:稍微扩展字符串插值,它会用相同名称的变量值替换字符串中的
$
占位符(虽然不是立即,因为它首先创建了
GString
的实例)。它在Java中大致类似于此:

String str1 = "My application version is " + app_version;
因此,您可以在脚本中使用名为
app_version
的变量,而不是将变量替换为
replaceAll
,比如
def app_version=“2016072601”
(这有点像@BZ.的答案)



更新2:通过使用字符串插值(根据@BZ.的答案)或字符串连接,您不需要使用
replaceAll
,但需要一个名为
app\u version
的变量:

def app_version = '2016072601'
def str1 = "My application version is $app_version"
assert str1 == 'My application version is 2016072601'
def app_version = '2016072601'
def str1 = "My application version is " + app_version
assert str1 == 'My application version is 2016072601'
对于字符串连接,您还需要一个名为
app\u version
的变量:

def app_version = '2016072601'
def str1 = "My application version is $app_version"
assert str1 == 'My application version is 2016072601'
def app_version = '2016072601'
def str1 = "My application version is " + app_version
assert str1 == 'My application version is 2016072601'
或者:

def versionString = "2016072601"
def string2 = "My application version is $versionString"
或者:

def versionString = "2016072601"
def string2 = "My application version is $versionString"

“我的应用程序版本是$app_version”=>此处app_version必须是一个变量。在groovy中,如果在字符串之前使用“$”并使用双倒逗号,那么它将用作变量。“我的应用程序版本是$app\u version”=>这里app\u version必须是一个变量。在groovy中,如果在字符串之前使用“$”和双倒逗号,那么它将用作变量。对不起,Will p,请告诉我如果app_版本是变量,那么如何在单倒逗号中使用它。这里它被用作字符串。@Omi,我更新了我的答案。让我知道它现在是否更清晰。它已被清除,但根据您的更新。也可以。String str1=“我的应用程序版本为”+应用程序版本;def str2=str1.replaceAll(应用程序版本,'2016072601')断言str2=='我的应用程序版本是2016072601',在我打印“str1”的值时,它没有给我实际结果。通过使用字符串插值或字符串串联,您不需要使用
replaceAll
。我更新了我的答案。如果你还有任何问题,请告诉我。是的。。这就是我想说的。。在这里,如果“app_version”是一个变量,则不需要替换任何东西。谢谢,Will PSorry,但是Will p,你能告诉我如果app_版本是一个变量,那么你如何用单倒逗号来使用它吗。这里它被用作字符串。@Omi,我更新了我的答案。让我知道它现在是否更清晰。它已被清除,但根据您的更新。也可以。String str1=“我的应用程序版本为”+应用程序版本;def str2=str1.replaceAll(应用程序版本,'2016072601')断言str2=='我的应用程序版本是2016072601',在我打印“str1”的值时,它没有给我实际结果。通过使用字符串插值或字符串串联,您不需要使用
replaceAll
。我更新了我的答案。如果你还有任何问题,请告诉我。是的。。这就是我想说的。。在这里,如果“app_version”是一个变量,则不需要替换任何东西。谢谢,威尔普