Elimine ederek başlayalım StringTokenizer
. Yaşlanıyor ve düzenli ifadeleri bile desteklemiyor. Belgelerinde şunlar belirtiliyor:
StringTokenizer
kullanımı yeni kodda kullanılmamasına rağmen uyumluluk nedeniyle saklanan eski bir sınıftır. Bu işlevselliği arayan herkesin bunun yerine veya split
yöntemini kullanması önerilir .String
java.util.regex
Öyleyse hemen atalım. Bırakıyor split()
ve Scanner
. Aralarındaki fark nedir?
Birincisi, split()
foreach döngüsü kullanmayı kolaylaştıran bir dizi döndürür:
for (String token : input.split("\\s+") { ... }
Scanner
daha çok bir akış gibi oluşturulmuştur:
while (myScanner.hasNext()) {
String token = myScanner.next();
...
}
veya
while (myScanner.hasNextDouble()) {
double token = myScanner.nextDouble();
...
}
(Oldukça büyük bir API'ye sahip , bu yüzden her zaman böyle basit şeylerle sınırlı olduğunu düşünmeyin.)
Bu akış tarzı arayüz, ayrıştırmaya başlamadan önce tüm girdilere sahip olmadığınız (veya alamadığınız) basit metin dosyalarını veya konsol girişini ayrıştırmak için yararlı olabilir.
Şahsen, hatırlayabildiğim tek zaman Scanner
okul projeleri için, komut satırından kullanıcı girişi almak zorunda kaldığım zamandır . Bu tür işlemleri kolaylaştırır. Ama eğer String
bölmek istediğim bir şey varsa , bu neredeyse devam etmek için beyinsizdir split()
.