我试过了:
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('\)',' ')
答案 0 :(得分:34)
与Java相同:
def str2 = str1.replaceAll('\\)',' ')
你必须逃避反斜杠(使用另一个反斜杠)。
答案 1 :(得分:25)
更Groovy方式:def str2 = str1.replaceAll(/\)/,' ')
答案 2 :(得分:4)
您必须逃离\
replaceAll
def str2 = str1.replaceAll('\\)',' ')
答案 3 :(得分:0)
其他答案对于这个具体例子是正确的;但是,在实际情况下,例如在使用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('\\(',' ')
这是因为Java中的replaceAll
方法仅适用于string
类型。为此,toString()
应添加到使用def
定义的变量的结果中:
def subResult = result.toString().replaceAll('\\[',' ')