groovy:如何用''替换所有')''

时间:2010-04-11 13:34:44

标签: groovy replaceall

我试过了:

def str1="good stuff 1)"
def str2 = str1.replaceAll('\)',' ')

但我收到以下错误:

  

异常org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败,Script11.groovy:3:意外字符:'\'@第3行,第29列。在org.codehaus.groovy.control.ErrorCollector出现1错误(failIfErrors :296)

所以问题是我该怎么做:

str1.replaceAll('\)',' ')

4 个答案:

答案 0 :(得分:34)

与Java相同:

def str2 = str1.replaceAll('\\)',' ')

你必须逃避反斜杠(使用另一个反斜杠)。

答案 1 :(得分:25)

更Groovy方式:def str2 = str1.replaceAll(/\)/,' ')

答案 2 :(得分:4)

您必须逃离\

内的replaceAll
def str2 = str1.replaceAll('\\)',' ')

答案 3 :(得分:0)

其他答案对于这个具体例子是正确的;但是,在实际情况下,例如在使用JsonSlurperXmlSlurper解析结果然后替换其中的字符时,会发生以下异常:

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('\\(',' ')

这是因为Java中的replaceAll方法仅适用于string类型。为此,toString()应添加到使用def定义的变量的结果中:

def subResult = result.toString().replaceAll('\\[',' ')