2010-04-11 26 views
21

'' ile:harika: Bu çalıştı nasıl replaceAll için ')'

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

ama şu hata var:

Exception org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, Script11.groovy: 3: unexpected char: '\' @ line 3, column 29. 1 error at org.codehaus.groovy.control.ErrorCollector(failIfErrors:296)

yüzden soru bunu nasıl:

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

cevap

26

aynı:

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

Ters eğik çizgi (başka bir ters eğik çizgi ile) kaçmak zorunda.

4

Sen replaceAll

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

Daha Groovy şekilde içeriye \ kaçmak zorunda: def str2 = str1.replaceAll(/\)/,' ')

0

diğer cevaplar bu özel örneğin doğru; Ancak gerçek durumlarda, örneğin JsonSlurper veya XmlSlurper kullanarak bir sonuç ayrıştırılırken ve sonra bir karakter değiştirerek aşağıdaki İstisna oluşur:

groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.replaceAll() is applicable for argument types 

aşağıdaki örneği inceleyin,

def result = new JsonSlurper().parseText(totalAddress.toURL().text) 

birini ise örneğin bir ' ' ile result bir karakter gibi '(' değiştirmek istiyor aşağıdaki döner yukarıda Exception:

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

Bu, Java'dan replaceAll yönteminin yalnızca string türleri için çalıştığı gerçeğinden kaynaklanmaktadır. Bunun çalışması için def:

def subResult = result.toString().replaceAll('\\[',' ') 
toString() tanımlanmış bir değişkenin sonucu eklenmelidir.
İlgili konular