Ответ 1
То же, что и в Java:
def str2 = str1.replaceAll('\\)',' ')
Вам нужно избежать обратной косой черты (с другой обратной косой чертой).
Я пробовал это:
def str1="good stuff 1)"
def str2 = str1.replaceAll('\)',' ')
но я получил следующую ошибку:
Exception org.codehaus.groovy.control.MultipleCompilationErrorsException: сбой при запуске, Script11.groovy: 3: неожиданный char: '\' @строка 3, столбец 29. 1 ошибка в org.codehaus.groovy.control.ErrorCollector(failIfErrors: 296)
так что вопрос в том, как это сделать:
str1.replaceAll('\)',' ')
То же, что и в Java:
def str2 = str1.replaceAll('\\)',' ')
Вам нужно избежать обратной косой черты (с другой обратной косой чертой).
Более Groovy способ: def str2 = str1.replaceAll(/\)/,' ')
Вам нужно избежать \
внутри replaceAll
def str2 = str1.replaceAll('\\)',' ')
Другие ответы верны для этого конкретного примера; однако в реальных случаях, например, при анализе результата с использованием JsonSlurper
или XmlSlurper
, а затем замены символа в нем происходит следующее исключение:
groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.replaceAll() is applicable for argument types
Рассмотрим следующий пример:
def result = new JsonSlurper().parseText(totalAddress.toURL().text)
Если вы хотите заменить символ, например '('
в result
на ' '
, например, следующее возвращает выше Exception
:
def subResult = result.replaceAll('\\(',' ')
Это связано с тем, что метод replaceAll
из Java работает только для типов string
. Для этого нужно добавить toString()
к результату переменной, определенной с помощью def
:
def subResult = result.toString().replaceAll('\\[',' ')