web-dev-qa-db-fra.com

caractère de corps de chaîne illégale après le signe dollar

si je définis une variable groovy

def x = "anish$"

cela me jettera une erreur, le correctif est

def x = "anish\$"

à part "$", quels sont les caractères de la liste noire qui doivent être une barre oblique inverse, Existe-t-il une référence Groovy qui répertorie les caractères réservés. La plupart des "spécifications de langue" mentionnent ces détails, mais je ne les vois pas dans la langue Groovy spec (de nombreux commentaires "TODO").

20
anish

Utilisez simplement des guillemets simples:

def x = 'anish$'

Si ce n'est pas possible, la seule chose qui va vous causer des problèmes est $, car il s'agit du caractère de modèle utilisé par GString (voir la section GString sur cette page - environ à mi-chemin)

De toute évidence, le caractère barre oblique inverse doit également s'échapper, c'est-à-dire:

def x = 'anish\\'
27
tim_yates

Vous pouvez utiliser une représentation octale. le caractère $ représente 044 en octal, puis:
def x = 'anish\044'

ou
def x = 'anish\044'

Par exemple, en Java j'ai utilisé comme ceci:
def x = 'anish\044'

8
Marcelo Rebouças

La solution de tim_yates ne fonctionne pas dans certains contextes, par ex. dans un rapport Jasper. Donc, si toujours tout avec un $ signe veut être interprété comme une variable (${varX}), par exemple. dans

"xyz".replaceAll("^(.{4}).{3}.+$", "$1...")

puis faites simplement le signe dollar un caractère concaténé unique '$', par exemple.

"xyz".replaceAll("^(.{4}).{3}.+"+'$', '$'+"1...")
3
Andreas Dietrich

Ce pourrait être une méthode bon marché, mais ce qui suit fonctionne pour moi.

def x = "anish" + '$'
2
Letokteren