Strings mit doppelten Anführungszeichen und $
sind GStrings, die Groovy's string interpolation auslöst. Außerdem erhält replaceAll
eine Regex als erstes Argument, und $
ist ein Sonderzeichen in regex, also müssen Sie auch doppelt entkommen.
können Sie einfache Anführungszeichen verwenden, oder Sie können in Ihrem den $
Charakter entkommen str1
:
def str1='My application version is $app_version'
def str2 = str1.replaceAll('\\$app_version','2016072601')
assert str2 == 'My application version is 2016072601'
Update: Expanding String Interpolation ein wenig, es ersetzt den $
Platzhalter in der Zeichenfolge mit der Variablenwert des gleichen Namens (wenn auch nicht sofort, da zuerst eine Instanz von GString
erstellt wird). Es ist in etwa vergleichbar mit diesem in Java:
String str1 = "My application version is " + app_version;
Anstatt also die Variable mit replaceAll
ersetzen, Sie app_version
, wie def app_version = "2016072601"
(die eine Variable in Ihrem Skript mit dem Namen sind ein bisschen wie @BZ haben könnten ‚. s Antwort)
Update 2:. von String-Interpolation (per @ BZ Antwort) oder String-Verkettung, brauchen Sie nicht replaceAll
zu verwenden, aber Sie müssen eine Variable app_version
genannt:
def app_version = '2016072601'
def str1 = "My application version is $app_version"
assert str1 == 'My application version is 2016072601'
Und mit String-Verkettung müssen Sie auch eine Variable app_version
genannt:
def app_version = '2016072601'
def str1 = "My application version is " + app_version
assert str1 == 'My application version is 2016072601'
"Meine Anwendung Version ist $ APP_VERSION" ==> APP_VERSION Hier eine Variable muss. In groovy, wenn Sie '$' vor String mit doppeltem Hochkomma verwenden, wird es als Variable verwendet. –