क्या कोई मुझे यह समझने में मदद कर सकता है कि जावा में split
कैसे काम करता है। मेरे पास निम्न कोड है:
String temp_array[];
String rates = "RF\\0.6530\\0.6535\\D";
String temp = rates.substring(1, rates.length());
System.out.println(temp);// prints F\0.6530\0.6535\D
String regex = "\\";
temp_array = temp.split(regex);
String insertString = "INSERT into table values("+temp_array[0]+","+temp_array[1]+","+temp_array[2]+","+temp_array[3]+")";
हालांकि विभाजन समारोह में मुझे निम्न अपवाद मिलता है:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.split(Unknown Source)
at java.lang.String.split(Unknown Source)
at simple_hello.main(simple_hello.java:15)
5 जवाब
\
रेगुलर एक्सप्रेशन के साथ-साथ जावा स्ट्रिंग लिटरल में एक विशेष वर्ण है। यदि आप एक रेगेक्स में एक शाब्दिक बैकस्लैश चाहते हैं, तो आपको इसे दो बार दोहराना होगा। \\\\
का प्रयास करें (एक बार लेक्स हो जाने पर \\
बन जाता है, एक शाब्दिक \
बन जाता है रेगेक्स पार्सर)।
आप स्ट्रिंग को बैक स्लैश पर विभाजित करने का प्रयास कर रहे हैं, आपको इसका उपयोग करने की आवश्यकता है:
String regex = "\\\\";
\
जावा स्ट्रिंग और रेगेक्स इंजन दोनों के लिए एस्केप कैरेक्टर है। तो एक जावा स्ट्रिंग \\
को रेगेक्स इंजन पर \
के रूप में पास किया जाता है जो अपूर्ण है क्योंकि \
को उस चरित्र द्वारा पीछा किया जाना है जिसे वह बचने की कोशिश कर रहा है।
स्ट्रिंग \\\\
को रेगेक्स इंजन में \\
के रूप में पास किया जाता है, जो एक \
है जो \
से बच रहा है, जिसका प्रभावी रूप से शाब्दिक अर्थ \
है।
आपको रेगेक्सपी पैटर्न में '\' चार से बचना होगा, इसलिए आपका रेगेक्स मूल रूप से होगा
String regex = "\\\\";
बदलने के
String regex = "\\";
साथ
String regex = "\\\\";
आपको अपना रेगेक्स ठीक करना होगा। यह होना चाहिए:
String regex = "\\\\";
क्योंकि डबल बैकस्लैश जावा स्ट्रिंग्स के लिए एक एस्केप सीक्वेंस है।
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।