มาเริ่มStringTokenizer
กันเลยกำจัด มันเริ่มแก่แล้วและยังไม่รองรับการแสดงออกปกติ เอกสารประกอบของรัฐ:
StringTokenizer
เป็นคลาสดั้งเดิมที่ถูกเก็บไว้เพื่อเหตุผลด้านความเข้ากันได้แม้ว่าการใช้งานจะไม่ได้รับการสนับสนุนในรหัสใหม่ ขอแนะนำให้ทุกคนที่แสวงหาฟังก์ชั่นนี้ใช้split
วิธีการString
หรือjava.util.regex
แพคเกจแทน
ลองโยนมันออกไปทันที ที่ใบและsplit()
Scanner
ความแตกต่างระหว่างพวกเขาคืออะไร
สำหรับสิ่งหนึ่งsplit()
เพียงส่งกลับอาร์เรย์ซึ่งทำให้ง่ายต่อการใช้วนรอบ foreach:
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()