चलो शुरू करते हैं StringTokenizer
। यह पुराना हो रहा है और नियमित अभिव्यक्तियों का समर्थन भी नहीं करता है। इसके प्रलेखन में कहा गया है:
StringTokenizer
एक विरासत वर्ग है जिसे संगतता कारणों से रखा जाता है, हालांकि इसका उपयोग नए कोड में हतोत्साहित किया जाता है। यह अनुशंसा की जाती है कि इस कार्यक्षमता को प्राप्त करने वाला कोई भी या इसके बजाय पैकेज की split
विधि का उपयोग करे ।String
java.util.regex
तो चलो इसे अभी बाहर फेंक दो। यही कारण है कि पत्तियों split()
और Scanner
। उनमें क्या अंतर है?
एक बात के लिए, split()
बस एक सरणी देता है, जो कि फॉर्च लूप का उपयोग करना आसान बनाता है:
for (String token : input.split("\\s+") { ... }
Scanner
एक धारा की तरह बनाया गया है:
while (myScanner.hasNext()) {
String token = myScanner.next();
...
}
या
while (myScanner.hasNextDouble()) {
double token = myScanner.nextDouble();
...
}
(इसकी एक बड़ी API है , इसलिए ऐसा मत सोचो कि यह हमेशा ऐसी सरल चीजों तक ही सीमित है।)
यह स्ट्रीम-स्टाइल इंटरफ़ेस सरल पाठ फ़ाइलों या कंसोल इनपुट को पार्स करने के लिए उपयोगी हो सकता है, जब आपके पास पार्स शुरू करने से पहले सभी इनपुट नहीं होते (या नहीं मिल सकते)।
व्यक्तिगत रूप से, केवल उसी समय का उपयोग Scanner
करना याद कर सकते हैं जब स्कूल प्रोजेक्ट्स के लिए है, जब मुझे कमांड लाइन से उपयोगकर्ता इनपुट प्राप्त करना था। यह उस तरह के ऑपरेशन को आसान बनाता है। लेकिन अगर मेरे पास ऐसा है String
जिसे मैं विभाजित करना चाहता हूं, तो उसके साथ जाने के लिए लगभग कोई दिमाग नहीं है split()
।