31

私はこれを試しました:

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('\)',' ')
4

4 に答える 4

41

Javaの場合と同じ:

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

バックスラッシュを(別のバックスラッシュで)エスケープする必要があります。

于 2010-04-11T13:38:33.670 に答える
26

よりグルービーな方法:def str2 = str1.replaceAll(/\)/,' ')

于 2010-04-11T15:26:01.563 に答える
5

\あなたは中を脱出する必要がありますreplaceAll

def str2 = str1.replaceAll('\\)',' ')
于 2010-04-11T13:38:39.660 に答える
2

他の答えは、この特定の例に対して正しいです。ただし、実際の場合、たとえば、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)

'('たとえば、 inなどresultの文字をに置き換えたい場合' '、以下は上記を返しますException

def subResult = result.replaceAll('\\(',' ')

これはreplaceAll、Javaのメソッドがstring型に対してのみ機能するためです。これが機能toString()するためには、以下を使用して定義された変数の結果に追加する必要がありますdef

def subResult = result.toString().replaceAll('\\[',' ')
于 2017-02-26T09:39:27.130 に答える