RegEx

2010-11-30 23 views
76

olmadan String.replaceAll Dizenin tüm örneklerini bir dizede değiştirmek istiyorum ancak String.replaceAll() yalnızca bir modeli kabul eder. Bir önceki maçtan aldığım dize. ben var ya replaceAll() bir versiyonu yerine desen değişmez bir dize kabul başka bir sınıfta var desene kaçar eklemek mümkün mü?RegEx

+0

[Backslash problem with String.replaceAll] 'ın olası kopyası (http://stackoverflow.com/questions/1701839/backslash-problem-with-string-replaceall) – McDowell

cevap

78

Çıkışlar ekleme yöntemi Pattern.quote().

String replaced = myString.replaceAll(Pattern.quote(matchingStr), replacementStr) 

Fakat Jon dediği gibi sadece replace() kullanabilirsiniz. Bu, replaceAll adından sapmasına rağmen,gibi tüm oluşumlarını değiştirir.

+0

Eşleşme için "$" yazıyorsanız mükemmel çalışır. örnek. –

+0

yerine Pattern.compile(); Pattern.quote() istenmeyen sonuçları getirir –

+0

@PavloZvarych: 'Pattern.compile()', dizeyi normal bir ifade olarak derler; bu, özel karakterlere özel anlamlar verileceği anlamına gelir. Yani OP ("bir hazır olarak dize tedavi",() 'diyor' alıntı) için soruyordu komple 'Pattern.quote()' ne yaptığının tam tersi, ve bu. Belki de bahsettiğin "istenmeyen sonuçlar" ın ne olduğunu genişletebilirsin. –