groovy: cómo reemplazar todo '')'' con ''''
replaceall (4)
Las otras respuestas son correctas para este ejemplo específico; sin embargo, en casos reales, por ejemplo, cuando se analiza un resultado usando JsonSlurper
o XmlSlurper
y luego se reemplaza un carácter en él, se produce la siguiente excepción:
groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.replaceAll() is applicable for argument types
Considera el siguiente ejemplo,
def result = new JsonSlurper().parseText(totalAddress.toURL().text)
Si uno quiere reemplazar un carácter como ''(''
en el result
con un '' ''
por ejemplo, lo siguiente devuelve la Exception
anterior:
def subResult = result.replaceAll(''//('','' '')
Esto se debe al hecho de que el método replaceAll
de Java solo funciona para string
tipos de string
. Para que esto funcione, toString()
debe agregar al resultado de una variable definida usando def
:
def subResult = result.toString().replaceAll(''//['','' '')
Intenté esto:
def str1="good stuff 1)"
def str2 = str1.replaceAll(''/)'','' '')
pero tengo el siguiente error:
Excepción org.codehaus.groovy.control.MultipleCompilationErrorsException: inicio fallido, Script11.groovy: 3: carácter inesperado: ''/' @ línea 3, columna 29. 1 error en org.codehaus.groovy.control.ErrorCollector (failIfErrors: 296)
entonces la pregunta es ¿cómo hago esto?
str1.replaceAll(''/)'','' '')
Lo mismo que en Java:
def str2 = str1.replaceAll(''//)'','' '')
Tienes que escapar de la barra invertida (con otra barra invertida).
Tienes que escapar del /
dentro de replaceAll
def str2 = str1.replaceAll(''//)'','' '')
Una forma más Groovy: def str2 = str1.replaceAll(//)/,'' '')