我试过这个:
def str1="good stuff 1)" def str2 = str1.replaceAll('\)',' ')
但我得到了以下错误:异常错误发生在:启动失败,Script11.groovy:3:意外字符:“\”@第3行,第29列。1在org.codehaus.groovy.control.错误收集器中出现错误(如果出现错误则失败:296)所以问题是我该怎么做
str1.replaceAll('\)',' ')
46scxncf1#
与Java中的相同:
def str2 = str1.replaceAll('\\)',' ')
您必须转义反斜杠(使用另一个反斜杠)。
7lrncoxx2#
一个更妙的方式:def str2 = str1.replaceAll(/\)/,' ')
def str2 = str1.replaceAll(/\)/,' ')
jm2pwxwz3#
你必须在replaceAll里面逃离\
replaceAll
\
dsekswqp4#
对于这个特定的例子,其他的答案都是正确的;但是,在真实的情况中,例如,当使用JsonSlurper或XmlSlurper解析结果,然后替换其中的字符时,会发生以下异常:
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:
result
'('
' '
Exception
def subResult = result.replaceAll('\\(',' ')
这是因为Java中的replaceAll方法只适用于string类型。要使其有效,toString()应添加到使用def定义的变量的结果中:
string
toString()
def
def subResult = result.toString().replaceAll('\\[',' ')
puruo6ea5#
只使用不带正则表达式方法:
def str2 = str1.replace(')',' ')
5条答案
按热度按时间46scxncf1#
与Java中的相同:
您必须转义反斜杠(使用另一个反斜杠)。
7lrncoxx2#
一个更妙的方式:
def str2 = str1.replaceAll(/\)/,' ')
jm2pwxwz3#
你必须在
replaceAll
里面逃离\
dsekswqp4#
对于这个特定的例子,其他的答案都是正确的;但是,在真实的情况中,例如,当使用
JsonSlurper
或XmlSlurper
解析结果,然后替换其中的字符时,会发生以下异常:考虑以下示例,
例如,如果要将
result
中的字符(如'('
)替换为' '
,则下面的代码将返回上面的Exception
:这是因为Java中的
replaceAll
方法只适用于string
类型。要使其有效,toString()
应添加到使用def
定义的变量的结果中:puruo6ea5#
只使用不带正则表达式方法: