ในส่วนก่อนหน้านี้ เราได้เรียนรู้วิธีแรก - การแยกสตริงโดยใช้นิพจน์ทั่วไปเป็นตัวคั่น
เราจำเป็นต้องรู้ว่าหากวัตถุ Scanner ต้องการใช้เครื่องหมายแยกเริ่มต้นซึ่งเป็นช่องว่างเพื่อแยกข้อมูลในสตริงนั้นจำเป็นต้องใช้ช่องว่างเพื่อแยกข้อมูลในสตริงออกจากอักขระอื่น ๆ มิฉะนั้นจะ ไม่สามารถแยกวิเคราะห์ข้อมูลที่เราต้องการได้
ในความเป็นจริง Scanner object ยังสามารถเรียกใช้เมธอดได้:
useDelimiter (นิพจน์ปกติ);
ใช้ นิพจน์ทั่วไป เป็นตัวคั่น กล่าวคือ เมื่อออบเจ็กต์ Scanner แยกวิเคราะห์สตริง จะใช้สตริงที่ตรงกับนิพจน์ทั่วไปเป็นตัวคั่น
ตัวอย่างเช่น แยกวิเคราะห์สตริงโดยใช้นิพจน์ทั่วไป (ตรงกับสตริงที่ไม่ใช่ตัวเลขทั้งหมด) String regex = [^0123456789.]+ เป็นเครื่องหมายตัวคั่น
importjava.util.*;publicclassMain{publicstaticvoidmain(Stringargs[]){Stringcost=รายการบิลค่าโทรศัพท์: ค่าโทรในประเทศ 66.66 หยวน, ค่าโทรทางไกล 166.66 หยวน, ค่าส่งข้อความ 16.16 หยวน;Scannerscanner=newScanner(cost);scanner useDelimiter([^0123456789. ]+);//scanner ตั้งค่าเครื่องหมายแยก doublesum=0; While(scanner.hasNext()){try{doubleprice=scanner.nextDouble();sum=sum+price;System.out. println(price);}catch (InputMismatchExceptionexp){Stringt=scanner.next();}}System.out.println(ต้นทุนการสื่อสารทั้งหมด: +sum+yuan);}}
ผลการวิ่งมีดังนี้:
66.66166.6616.16 ต้นทุนการสื่อสารทั้งหมด: 249.48 หยวน