groovy:如何将")“替换为”“

biswetbf  于 2022-11-21  发布在  其他
关注(0)|答案(5)|浏览(240)

我试过这个:

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

但我得到了以下错误:
异常错误发生在:启动失败,Script11.groovy:3:意外字符:“\”@第3行,第29列。1在org.codehaus.groovy.control.错误收集器中出现错误(如果出现错误则失败:296)
所以问题是我该怎么做

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

46scxncf1#

与Java中的相同:

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

您必须转义反斜杠(使用另一个反斜杠)。

7lrncoxx

7lrncoxx2#

一个更妙的方式:def str2 = str1.replaceAll(/\)/,' ')

jm2pwxwz

jm2pwxwz3#

你必须在replaceAll里面逃离\

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

dsekswqp4#

对于这个特定的例子,其他的答案都是正确的;但是,在真实的情况中,例如,当使用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('\\[',' ')
puruo6ea

puruo6ea5#

只使用不带正则表达式方法:

def str2 = str1.replace(')',' ')

相关问题