J'ai essayé ceci:
def str1="good stuff 1)"
def str2 = str1.replaceAll('\)',' ')
mais j'ai eu l'erreur suivante:
Exception org.codehaus.groovy.control.MultipleCompilationErrorsException: échec du démarrage, Script11.groovy: 3: caractère inattendu: '\' @ ligne 3, colonne 29. 1 erreur sur org.codehaus.groovy.control.ErrorCollector (failIfErrors: 296)
la question est donc comment puis-je faire ceci:
str1.replaceAll('\)',' ')
Identique à Java:
def str2 = str1.replaceAll('\\)',' ')
Vous devez échapper à la barre oblique inverse (avec une autre barre oblique inverse).
Une manière plus Groovy: def str2 = str1.replaceAll(/\)/,' ')
Vous devez échapper au \
à l'intérieur de la replaceAll
def str2 = str1.replaceAll('\\)',' ')
Les autres réponses sont correctes pour cet exemple spécifique. Cependant, dans des cas réels, par exemple lors de l'analyse d'un résultat à l'aide de JsonSlurper
ou XmlSlurper
, puis du remplacement d'un caractère, l'exception suivante se produit:
groovy.lang.MissingMethodException: No signature of method: Java.util.ArrayList.replaceAll() is applicable for argument types
Considérez l'exemple suivant,
def result = new JsonSlurper().parseText(totalAddress.toURL().text)
Si l'on veut remplacer un caractère tel que '('
dans result
par un ' '
par exemple, le code suivant retourne la Exception
ci-dessus:
def subResult = result.replaceAll('\\(',' ')
Cela est dû au fait que la méthode replaceAll
de Java ne fonctionne que pour les types string
. Pour que cela fonctionne, toString()
doit être ajouté au résultat d'une variable définie à l'aide de def
:
def subResult = result.toString().replaceAll('\\[',' ')