2010-04-28 12 views
33

मैं एक "+" और "एसएस" के साथ सभी "ß" स्ट्रिंग में सभी व्हाइटस्पेस वर्णों को प्रतिस्थापित करना चाहता हूं ... यह "जावा regex s के साथ काम नहीं करता है, कहता है: अमान्य भागने अनुक्रम

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

इस: ß "है, लेकिन किसी भी तरह ग्रहण नहीं दूँगा मुझे इस्तेमाल एक खाली स्थान के लिए \ s .. मैंने कोशिश की" \ t "के बजाय, लेकिन या तो यह काम नहीं करता है .. मैं निम्नलिखित त्रुटि मिलती है मेरा कोड है:

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

यह क्यों काम नहीं करता है? क्या यह एंड्रॉइड, ग्रहण या क्या समस्या है?

अग्रिम धन्यवाद!

+1

मुझे आश्चर्य है कि आप एक स्ट्रिंग अक्षर में भी संकलित कर सकते हैं। एक स्ट्रिंग शाब्दिक में \ t जोड़ना एक नियमित अभिव्यक्ति बना देगा जिसमें नियमित अभिव्यक्ति की बजाय एक टैब वर्ण होता है, जिसके लिए आपको स्ट्रिंग अक्षर में \\ t की आवश्यकता होती है। – Geoff

+0

मैं इसे संकलित नहीं कर सका, .. ग्रहण ने मुझे यह त्रुटि संदेश पोस्ट किया जो मैंने पोस्ट किया था। मैं बस आपको यह बताना चाहता था कि मैं क्या करने की कोशिश कर रहा था। – MJB

उत्तर

53

आप स्लैश

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

धन्यवाद! भयानक वेबसाइट! :-) "आप 11 मिनट में कोई जवाब स्वीकार नहीं कर सकते" ....-) – MJB

9

समस्या यह है कि \ जावा के साथ-साथ regex पैटर्न में एक एस्केप वर्ण है है से बचने के लिए की जरूरत है। आप regex पैटर्न \n, कहते हैं मैच के लिए चाहते हैं, और आप आगे बढ़ कर लिखते हैं

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

तो regex पैटर्न \n जा रहा है खत्म नहीं होगा: यह होगा एन अप, एक वास्तविक न्यू लाइन किया जा रहा है के बाद से है कि क्या "\n" है जावा में मतलब है। यदि आप बैकस्लैश रखने के लिए पैटर्न चाहते हैं, तो आपको यह सुनिश्चित करना होगा कि आप उस बैकस्लैश से बचें, ताकि स्ट्रिंग के भीतर इसे विशेष वर्ण के रूप में नहीं माना जा सके।

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

भी आपको धन्यवाद! :-) – MJB

1

आप java.util.regex.Pattern वर्ग का उपयोग करें और p.matcher(start_from).replaceAll("+") के साथ संयोजन में p = Pattern.compile("\s"); की तरह कुछ का उपयोग कर सकते हैं। वैकल्पिक रूप से, बस अपने "\" "मेटाएक्टेक्टर को" \\ s "से बचें।

+0

jepp मैंने पहले से ही अपने कोड के किसी अन्य भाग में एक पैटर्न का उपयोग किया है, हालांकि, मैंने सोचा था कि इस मामले में केवल replaceAll (..) का उपयोग करने के लिए यह आसान होगा! – MJB

+0

'Pattern.compile (" \ s ")' अभी भी एक जावा वाक्यविन्यास त्रुटि है। –

संबंधित मुद्दे