2013-08-05 9 views
11

मैं प्रतीकों का पालन करते समय एक स्ट्रिंग को विभाजित करना चाहता हूं "+, -, *, /, =" मैं विभाजन समारोह का उपयोग कर रहा हूं लेकिन यह कार्य केवल एक तर्क ले सकता है इसके अलावा यह "+" पर काम नहीं कर रहा है। मैं निम्नलिखित कोड का उपयोग कर रहा हूं: -एक से अधिक प्रतीकों पर जावा में एक स्ट्रिंग को विभाजित करना

Stringname.split("Symbol"); 

धन्यवाद।

+0

का उपयोग करना पसंद है क्या आपने javadoc पढ़ना शुरू कर दिया है? कुछ स्पष्टीकरण होना चाहिए कि क्यों '+' पर विभाजन करना आपको वह नहीं देता है जो आप चाहते हैं। –

+0

शायद यहां देखें: http://stackoverflow.com/questions/7492672/java-string-split-by-multiple-character-delimiter – kadrian

उत्तर

31

String.split तर्क के रूप में एक नियमित अभिव्यक्ति लेता है।

इसका मतलब है कि आप अपने String को विभाजित करने के लिए एक पैरामीटर में जो भी प्रतीक या टेक्स्ट अबास्ट्रक्शन को वैकल्पिक कर सकते हैं।

दस्तावेज here देखें।

यहाँ अपने मामले में एक उदाहरण है:

String toSplit = "a+b-c*d/e=f"; 
String[] splitted = toSplit.split("[-+*/=]"); 
for (String split: splitted) { 
    System.out.println(split); 
} 

आउटपुट:

a 
b 
c 
d 
e 
f 

नोट्स:

  • Pattern रों के लिए सुरक्षित पात्रों डबल-भाग निकले \\ साथ होना चाहिए। संपादित करें: यहां आवश्यक नहीं है।
  • पैटर्न में [] ब्रैकेट एक वर्ण वर्ग इंगित करता है।
  • Pattern एस here पर अधिक।
+0

चरित्र वर्ग में उन मेटा-वर्णों से बचने की कोई आवश्यकता नहीं है। –

+0

@ रोहितजैन हाँ, बस एहसास हुआ।मैंने अपना जवाब संपादित कर लिया है, इंगित करने के लिए धन्यवाद। – Mena

+0

यह काम करेगा या "+" – Saumyaraj

3

आपको नियमित अभिव्यक्ति की आवश्यकता है। Addionaly आप regex OR ऑपरेटर की जरूरत है:

String[]tokens = Stringname.split("\\+|\\-|\\*|\\/|\\="); 
9

आप रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:

String[] tokens = input.split("[+*/=-]"); 

नोट: - यकीन है कि यह एक सीमा विभाजक के रूप में नहीं माना जाता है बनाने के लिए पहले या अंतिम स्थिति में रखा जाना चाहिए।

+1

आईडी "_must पहले या आखिरी _ में" के साथ "_must नहीं होना चाहिए" ... – jlordo

+0

@jlordo 'input.split (" [+ * -/=] "); 'ठीक काम करता है ... – assylias

+0

हालांकि 'input.split (" [+ */- =] "); 'नहीं ... – assylias

1

इसके लिए, आपको उचित रेगेक्स स्टेटमेंट का उपयोग करने की आवश्यकता है। आपके द्वारा सूचीबद्ध अधिकांश प्रतीकों को रेगेक्स में आरक्षित किया गया है, इसलिए आपको उन्हें \ से बचाना होगा।

एक बहुत बेसलाइन अभिव्यक्ति \+|\-|\\|\*|\= होगी। समझने में अपेक्षाकृत आसान, आप चाहते हैं कि प्रत्येक प्रतीक \ से बच गया है, और प्रत्येक प्रतीक | (या) प्रतीक से अलग है। यदि, उदाहरण के लिए, आप ^ भी जोड़ना चाहते थे, तो आपको केवल उस कथन में |\^ जोड़ना होगा।

परीक्षण और त्वरित अभिव्यक्तियों के लिए, मुझे www.regexpal.com

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