رائع: كيفية الاستبدال ") مع" "
-
26-09-2019 - |
سؤال
حاولت هذا:
def str1="good stuff 1)"
def str2 = str1.replaceAll('\)',' ')
لكنني حصلت على الخطأ التالي:
استثناء org.codehaus.groovy.control.multipleCompilationErrorsexception: فشل بدء التشغيل ، script11.groovy: 3: char غير متوقع: '' @ السطر 3 ، العمود 29. 1 خطأ في org.codehaus.groovy.control.errorcollector (فشل: 296)
لذا فإن السؤال هو كيف أفعل هذا:
str1.replaceAll('\)',' ')
المحلول
كما في جافا:
def str2 = str1.replaceAll('\\)',' ')
عليك الهروب من الذروة الخلفية (مع آخر مرة أخرى).
نصائح أخرى
طريقة أكثر مروعة: 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('\\(',' ')
هذا يرجع إلى حقيقة أن replaceAll
الطريقة من Java تعمل فقط من أجل string
الأنواع. لهذا العمل ، toString()
يجب إضافة إلى نتيجة متغير محدد باستخدام def
:
def subResult = result.toString().replaceAll('\\[',' ')