【问题标题】:groovy: how to replaceAll ')' with ' 'groovy:如何用“”替换所有“)”
【发布时间】:2011-02-06 17:05:03
【问题描述】:

我试过了:

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

但我收到以下错误:

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

所以问题是我该怎么做:

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

【问题讨论】:

    标签: groovy replaceall


    【解决方案1】:

    与 Java 相同:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        你必须在replaceAll中转义\

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

        【讨论】:

          【解决方案4】:

          对于这个具体的例子,其他答案是正确的;但是,在实际情况下,例如使用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('\\[',' ')
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-05-05
            • 1970-01-01
            • 2016-09-12
            • 2019-07-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多