สตริงแยก Java
วิธีการแยก () ของ java.lang.string, jdk 1.4 หรือใหม่กว่า
สตริงสาธารณะ [] แยก (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 ส่วนย่อย
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 สามารถปรับปรุงได้มาก
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!