2012-11-01 14 views

उत्तर

12

पास अप्रत्याशित आंतरिक त्रुटि यह

String[] strArray = str.split("\\\\"); 

कारण होना चाहिए क्यों क्योंकि Regex में है, \ का विशेष अर्थ है इसलिए आपको इसे \\ में भागने की आवश्यकता है।

और जावा में, \\ होना चाहिए बराबर

+0

इसे मिला। बहुत बहुत धन्यवाद – evilYoung

+0

मूल स्ट्रिंग में कोई स्लैश नहीं है। – assylias

+2

@assylias हां मूल स्ट्रिंग में कोई स्लैश नहीं है। लेकिन अमान्य रेगेक्स की वजह से अपवाद की ओर इशारा किया जा रहा है। –

3

String.split(String regex) करने के लिए \\\\ विधि पैरामीटर RegEx के रूप में ले लो।

\ के लिए regex \\\\

प्रयास करें

String[] strArray = str.split("\\\\"); 

कारण है कि हम "\\\\" उपयोग करते हैं,

\ के लिए Regex \\

अब \\\ के रूप में व्यवहार किया जाता है भागने charact लागू किया जाता है एर तर्क (\n = नई लाइन, \\ = \)

तो "\\" के लिए उपयोग हम "\\\\"

अपनी भ्रमित नहीं आशा है कि ..: डी

+0

और आपको भी धन्यवाद – evilYoung

0

कि ज्यादा मतलब नहीं है। आपकी मूल स्ट्रिंग यूनिकोड वर्णों का उपयोग करती है और ThinkPad के बराबर है। तो वैसे भी हटाने के लिए कोई स्लैश नहीं है।

दूसरे शब्दों में, कोड के नीचे दो बार ThinkPad प्रिंट:

public static void main(String args[]) { 
    String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064"; 
    System.out.println(str); 
    String[] strArray = str.split("\\\\"); 
    System.out.println(Arrays.toString(strArray)); 
} 

या भी स्पष्ट, कोड के नीचे सही प्रिंट:

public static void main(String args[]) { 
    String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064"; 
    String str2 = "ThinkPad"; 
    System.out.println(str == str2); 
} 
संबंधित मुद्दे