जावा में स्ट्रिंग को कैसे विभाजित करें: शुरुआती और विशेषज्ञों के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

"मदद करें, मैं स्ट्रिंग को विभाजित नहीं कर सकता!" — एक समस्या की कहानी

\n\n

कल्पना करें: आप Java में लॉग पार्सर लिख रहे हैं, CSV फ़ाइल प्रोसेस कर रहे हैं, या बस उपयोगकर्ता इनपुट को शब्दों में तोड़ना चाहते हैं। और फिर — रुकिए। यह कैसे करें? यदि आपने कभी "How do I split a string in Java" गूगल किया है, तो आप जानते हैं: इस प्रश्न ने Stack Overflow पर सैकड़ों हज़ारों व्यूज़ जुटाए हैं। इसलिए नहीं कि Java प्रोग्रामर आलसी हैं, बल्कि इसलिए कि split() एक शक्तिशाली चीज़ है, लेकिन इसमें छिपी समस्याएँ हैं।

\n\n

इस लेख में हम Java में स्ट्रिंग विभाजन को A से Z तक समझेंगे। आप जानेंगे कि split() विधि कैसे काम करती है, रेगुलर एक्सप्रेशन क्या आश्चर्य लाते हैं, और उन गलतियों से कैसे बचें जो हर दूसरे शुरुआती का इंतज़ार करती हैं। चलिए शुरू करते हैं!

\n\n

split() विधि: आपका मुख्य उपकरण

\n\n

Java में String वर्ग split() विधि के दो ओवरलोडेड विकल्प प्रदान करता है:

\n\n
public String[] split(String regex)\npublic String[] split(String regex, int limit)
\n\n

पहला विकल्प एक रेगुलर एक्सप्रेशन लेता है और स्ट्रिंग्स की एक सरणी लौटाता है। दूसरा वही करता है, लेकिन भागों की संख्या पर एक सीमा के साथ। सरल लगता है? आइए उदाहरण देखें।

\n\n

मूल उदाहरण: स्पेस द्वारा विभाजन

\n\n
public class SplitExample {\n    public static void main(String[] args) {\n        String text = "Java स्ट्रिंग्स को आसानी से विभाजित करता है";\n        String[] words = text.split(" ");\n        \n        for (String word : words) {\n            System.out.println(word);\n        }\n    }\n}
\n\n

आउटपुट:

\n
Java\nस्ट्रिंग्स\nको\nआसानी\nसे\nविभाजित\nकरता\nहै
\n\n

काम करता है? काम करता है। लेकिन क्या होगा यदि आपके पास लगातार कई स्पेस हों? तब सरणी में खाली स्ट्रिंग्स आ जाएँगी। अप्रिय, है ना?

\n\n

Java में कॉमा द्वारा स्ट्रिंग विभाजन (CSV)

\n\n

सबसे आम कार्यों में से एक है Java में कॉमा द्वारा स्ट्रिंग विभाजन। मान लीजिए, आपके पास एक CSV स्ट्रिंग है:

\n\n
String csv = "सेब,नाशपाती,केला,संतरा";\nString[] fruits = csv.split(",");\n\nfor (String fruit : fruits) {\n    System.out.println(fruit.trim()); // trim() अतिरिक्त स्पेस हटाता है\n}
\n\n

आउटपुट:

\n
सेब\nनाशपाती\nकेला\nसंतरा
\n\n

ध्यान दें: हमने trim() जोड़ा, क्योंकि वास्तविक डेटा में कॉमा के बाद अक्सर स्पेस होते हैं। इसके बिना आपको लीडिंग स्पेस के साथ " सेब" मिलेगा — और फिर आप सोचेंगे कि स्ट्रिंग्स क्यों मेल नहीं खातीं।

\n\n

रेगुलर एक्सप्रेशन: जादू और दर्द

\n\n

split() विधि एक रेगुलर एक्सप्रेशन लेती है। यह बहुत लचीलापन देता है, लेकिन सावधानी की आवश्यकता है। आइए लोकप्रिय परिदृश्यों पर विचार करें।

\n\n

डॉट द्वारा विभाजन

\n\n

IP पता "192.168.1.1" को तोड़ना चाहते हैं? भोला कोड str.split(".") काम नहीं करेगा। क्यों? क्योंकि रेगुलर एक्सप्रेशन में डॉट एक विशेष वर्ण है, जिसका अर्थ है "कोई भी वर्ण"। परिणामस्वरूप, आपको खाली स्ट्रिंग्स की एक सरणी मिलेगी।

\n\n

सही समाधान — डॉट को एस्केप करना:

\n\n
String ip = "192.168.1.1";\nString[] parts = ip.split("\\\\."); // डबल बैकस्लैश!\n\nfor (String part : parts) {\n    System.out.println(part);\n}\n// आउटपुट: 192 168 1 1
\n\n

याद रखें: Java में रेगुलर एक्सप्रेशन में एस्केप करने के लिए डबल बैकस्लैश \\\\ का उपयोग किया जाता है। एकल \\ स्ट्रिंग के लिए एक नियंत्रण वर्ण है, और डबल पहले से ही regex के लिए है।

\n\n

एकाधिक विभाजकों द्वारा विभाजन

\n\n

क्या करें यदि स्ट्रिंग में कॉमा, सेमीकोलन और स्पेस हों? वर्गाकार कोष्ठकों में वर्ण वर्ग का उपयोग करें:

\n\n
String messy = "सेब;नाशपाती,केला संतरा";\nString[] items = messy.split("[;,\\\\s]+"); // ; या , या स्पेस वर्ण\n\nfor (String item : items) {\n    System.out.println(item);\n}\n// आउटपुट: सेब नाशपाती केला संतरा
\n\n

चिह्न + का अर्थ है "एक या अधिक" — यह सुनिश्चित करता है कि विभाजकों का क्रम खाली स्ट्रिंग्स नहीं बनाता।

ब्लॉग

पुस्तक अनुशंसाएँ