私はこれを試しました:
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:296)で1エラー
質問はどうすればいいのですか?
str1.replaceAll('\)',' ')
Javaと同じ:
def str2 = str1.replaceAll('\\)',' ')
バックスラッシュをエスケープする必要があります(別のバックスラッシュを使用)。
よりGroovyの方法:def str2 = str1.replaceAll(/\)/,' ')
replaceAll
内の\
をエスケープする必要があります
def str2 = str1.replaceAll('\\)',' ')
この特定の例では、他の答えは正しいです。ただし、実際には、たとえば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('\\[',' ')
_