2010-04-28 9 views
33

"+" ve "ss" ile tüm "ß" olan tüm boşluk karakterlerini değiştirmek istiyorum ... "Java regex s ile çalışmıyor, diyor: geçersiz çıkış dizisi

Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \)

bu: ß yerine '\ t", ama bir şekilde denedim .. ben \ bir boşluk için s kullanmasına izin vermez tutulma', ama çalışmıyor ya gelmez .. aşağıdaki hatayı alıyorum benim kodum:

try { 
    String temp1 = from.getText().toString(); 
    start_from = temp1.replaceAll("ß", "ss"); 
    start_from = start_from.replaceAll("\s", "+"); 
} 

Neden çalışmıyor? android, tutulma ya da ne ile bir sorun mu?

şimdiden teşekkürler!

+1

Bir dizede basitçe derleyebileceğinize şaşırdım. Bir dize değişmezinde \ t eklendiğinde, dizgi değişkeni içinde \\ t olması için \ t ile normal ifadeden ziyade bir sekme karakteri içeren normal bir ifade oluşturulur. – Geoff

+0

Derleyemedim, eclipse bana gönderdiğim bu hata mesajını verdi. Sadece ne yapmaya çalıştığımı bilmeni istedim. – MJB

cevap

53

eğik çizgiden

start_from = start_from.replaceAll("\\s", "+"); 
+3

Teşekkürler! harika bir web sitesi! :-) "11 dakikada bir cevabı kabul edemezsiniz" .... ;-) – MJB

9

sorun \ java yanı sıra regex desenlerde bir kaçış karakteri olmasıdır kaçmak gerekir. Eğer düzenli ifade deseni \n, diyelim ki maç için istiyor ve

replaceAll("\n", "+"); 

devam edin ve yazma istiyorsanız regex desen \n olarak sona olmaz: it would tr yukarı bu ne "\n" beri, gerçek bir yeni satır olmak Java'da demektir. Bir ters eğik çizgi içermesi için desen istiyorsanız, bu ters eğik çizgi kaçış emin olun, böylece dizede özel bir karakter olarak ele alınmaz.

replaceAll("\\s", "+"); 
+0

Teşekkürler! :-) – MJB

1

Sen java.util.regex.Pattern sınıfını kullanın ve p.matcher(start_from).replaceAll("+") birlikte p = Pattern.compile("\s"); gibi bir şey kullanabilirsiniz. Alternatif olarak, "\ s" meta karakterinizi "\\ s" olarak bırakın.

+0

jepp Kodumun başka bir bölümünde zaten bir desen kullandım, ancak, bu durumda sadece replaceAll (..) 'u kullanmanın daha kolay olacağını düşündüm! – MJB

+0

'Pattern.compile (" \ s ")' hala bir Java sözdizimi hatasıdır. –