चलो शुरू करते हैं StringTokenizer। यह पुराना हो रहा है और नियमित अभिव्यक्तियों का समर्थन भी नहीं करता है। इसके प्रलेखन में कहा गया है:
StringTokenizerएक विरासत वर्ग है जिसे संगतता कारणों से रखा जाता है, हालांकि इसका उपयोग नए कोड में हतोत्साहित किया जाता है। यह अनुशंसा की जाती है कि इस कार्यक्षमता को प्राप्त करने वाला कोई भी या इसके बजाय पैकेज की splitविधि का उपयोग करे ।Stringjava.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()।