2013-05-01 5 views
5

मैं जावा का उपयोग करके कुछ डेटा पार्स करने की कोशिश कर रहा हूं जिसे '|' से अलग किया गया है। अनुक्रम। नीचे डेटा का एक उदाहरण है।जावा स्ट्रिंग स्प्लिट "|"

String s = "111206|00:00:00|2|64104|58041"; 
String [] temp = s.split("|"); 
for(String p: temp) 
System.out.println(p); 

लेकिन '|' पर विभाजित होने की बजाय यह प्रत्येक चरित्र को अलग से अलग करता है। उपरोक्त कोड के लिए मुझे आउटपुट मिलता है।

1 
1 
1 
2 
0 
6 
| 
0 
0 
: 
0 
0 
: 
0 
0 
| 
2 
| 
6 
4 
1 
0 
4 
| 
5 
8 
0 
4 
1 

मुझे '|' को बदलकर एक मोड़ मिला लाइन में ',' द्वारा, लेकिन कोड का पैच कई बार चलने जा रहा है और मैं इसे अनुकूलित करना चाहता हूं।

String s = "111206|00:00:00|2|64104|58041"; 
s = s.replace('|', ','); 

मैं सिर्फ यह जानना चाहता हूं कि समस्या '|' के साथ क्या है ??

उत्तर

11

आप का उपयोग करना चाहिए:

String [] temp = s.split("\\|"); 

इसका कारण यह है split विधि एक नियमित अभिव्यक्ति लेता है, और | विशेष वर्ण से एक है। इसका मतलब है 'या'। इसका मतलब है कि आप '' or '' से विभाजित हैं, जो केवल '' है। इसलिए यह हर चरित्र के बीच विभाजित होगा।

क्योंकि पहले एक, स्ट्रिंग में वास्तविक \ बचने के लिए है \ के बाद से

आप दो स्लैश जरूरत है एक स्ट्रिंग में जावा के एस्केप वर्ण है। जावा स्ट्रिंग को समझता है जैसे "\|", और फिर रेगेक्स इसे "|" की तरह समझता है।

+1

सबसे आसान प्रतिनिधि अंक evar! – jahroy

+0

@jahroy [FGITW] (http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem) :) – Doorknob

+0

बिल्कुल सही, सबसे आसान और आसान तरीका। –

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