คำนำ
ฉันเชื่อว่าทุกคนควรรู้ว่าในการเขียนโปรแกรม Java บางครั้งเราจำเป็นต้องแบ่งสตริงตามอักขระตัวอักษร ฯลฯ เป็นจุดตัดเพื่อให้เราสามารถใช้ส่วนหนึ่งของสตริงนี้หรือบันทึกเนื้อหาที่สกัดกั้นทั้งหมดลงในอาร์เรย์ บทความต่อไปนี้จะแบ่งปันการแบ่งกลุ่มสองวิธีกับคุณ มาดูกันกันเถอะ
1. วิธีการแยก () ของ java.lang.string, jdk 1.4 หรือใหม่กว่า
public String[] split(String regex,int limit)
รหัสตัวอย่าง
public class stringsplit {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {string sourcestr = "1,2,3,4,5"; สตริง [] sourcestrarray = sourcestr.split (","); สำหรับ (int i = 0; i <sourcestrarray.length; i ++) {system.out.println (sourcestrarray [i]); } // แยกออกสูงสุด 3 strings int maxsplit = 3; sourcestrarray = sourcestr.split (",", maxsplit); สำหรับ (int i = 0; i <sourcestrarray.length; i ++) {system.out.println (sourcestrarray [i]); - ผลลัพธ์ผลลัพธ์:
12345123,4,5
การใช้งานแยกโดยตรงเรียกวิธีการแยกของคลาส matcher เมื่อใช้เมธอด String.split เพื่อกำหนดสตริงหากตัวคั่นใช้อักขระพิเศษบางอย่างอาจไม่ได้ผลลัพธ์ที่เราคาดหวัง
ตัวละครที่มีความหมายพิเศษในการแสดงออกปกติจะต้องหลบหนีเมื่อเราใช้ ตัวอย่าง:
Public Class StringsPlit {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ค่าสตริง = "192.168.128.33"; // โปรดทราบว่าคุณควรเพิ่ม // ไม่ได้ออกมา, ใช่สตริง [] names = value.split ("//."); สำหรับ (int i = 0; i <names.length; i ++) {system.out.println (ชื่อ [i]); -บทสรุปของตัวแยกแยก
1. ตัวละคร "|", "*", "+" ต้องเพิ่มด้วยอักขระที่หลบหนีและ "//" จะถูกเพิ่มเข้ามาก่อน
2. ถ้าเป็น "/" จะต้องเขียนเป็น "////"
3. หากมีตัวคั่นหลายตัวในสตริงคุณสามารถใช้ "|" เป็นยัติภังค์
ตัวอย่างเช่น: String str = "Java string-split#test" คุณสามารถใช้ Str.split(" |-|#") เพื่อแยกแต่ละสตริง สิ่งนี้แบ่งสตริงออกเป็น 3 ส่วนย่อย
2. java.util.tokenizer JDK 1.0 หรือใหม่กว่า
StringTokenizer
คลาส StringTokenizer อนุญาตให้แอปพลิเคชันแบ่งสตริงลงในโทเค็น StringTokenizer เป็นคลาสดั้งเดิมที่ได้รับการเก็บรักษาไว้ด้วยเหตุผลความเข้ากันได้ (แม้ว่าจะไม่ได้รับการสนับสนุนในรหัสใหม่) ขอแนะนำให้ทุกคนที่กำลังมองหาคุณลักษณะนี้ใช้วิธีการแยกของสตริงหรือแพ็คเกจ java.util.regex
ตัวอย่างรหัส
Public Class StringsPlit {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {string ip = "192.168.128.33"; StringTokenizer Token = new StringTokenizer (IP, "."); ในขณะที่ (token.hasmoreElements ()) {system.out.print (token.nexttoken ()+""); -อย่างไรก็ตามสำหรับการแยกสตริง "192.168..33" อาร์เรย์สตริงที่ส่งคืนมีเพียง 3 องค์ประกอบและสตริงที่ว่างเปล่าระหว่างตัวคั่นสองตัวจะถูกละเว้น สิ่งนี้ควรใช้ด้วยความระมัดระวัง
อย่างไรก็ตาม String.split ( String.split ถูกจับคู่กับนิพจน์ทั่วไปดังนั้นจึงไม่ใช้อัลกอริทึมการจับคู่สตริง KMP) ใช้อัลกอริทึมที่สำรวจตามลำดับโดยมีความซับซ้อนในเวลาสูงของ O (M*N) ดังนั้นในแง่ของประสิทธิภาพ StringTokenizer นั้นดีกว่ามาก สำหรับแอปพลิเคชันที่ใช้การแบ่งส่วนสตริงบ่อยครั้งเช่นการประมวลผลข้อมูล ETL ประสิทธิภาพของการใช้ StringTokenizer สามารถปรับปรุงได้มาก
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะช่วยในการศึกษาหรือทำงานของคุณ หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร