Mari kita mulai dengan menghilangkan StringTokenizer
. Semakin tua dan bahkan tidak mendukung ekspresi reguler. Dokumentasinya menyatakan:
StringTokenizer
adalah kelas lawas yang dipertahankan karena alasan kompatibilitas meskipun penggunaannya tidak disarankan dalam kode baru. Disarankan bahwa siapa pun yang mencari fungsionalitas ini menggunakan split
metode String
atau java.util.regex
paket sebagai gantinya.
Jadi mari kita membuangnya segera. Itu pergi split()
dan Scanner
. Apa perbedaan di antara mereka?
Untuk satu hal, split()
cukup kembalikan array, yang membuatnya mudah untuk menggunakan foreach loop:
for (String token : input.split("\\s+") { ... }
Scanner
dibangun lebih seperti aliran:
while (myScanner.hasNext()) {
String token = myScanner.next();
...
}
atau
while (myScanner.hasNextDouble()) {
double token = myScanner.nextDouble();
...
}
(Ini memiliki API yang agak besar , jadi jangan berpikir bahwa itu selalu terbatas pada hal-hal sederhana seperti itu.)
Antarmuka gaya aliran ini dapat berguna untuk mem-parsing file teks sederhana atau input konsol, ketika Anda tidak memiliki (atau tidak bisa mendapatkan) semua input sebelum mulai mengurai.
Secara pribadi, satu-satunya waktu saya bisa ingat menggunakan Scanner
adalah untuk proyek sekolah, ketika saya harus mendapatkan input pengguna dari baris perintah. Itu membuat operasi semacam itu mudah. Tetapi jika saya memiliki sesuatu String
yang ingin saya pisahkan, hampir tidak ada alasan untuk pergi split()
.