String#split()เพียงแค่ใช้วิธีการที่เหมาะสม:
String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556
โปรดทราบว่าการดำเนินการนี้เป็นนิพจน์ปกติดังนั้นโปรดหลีกเลี่ยงอักขระพิเศษหากจำเป็น
มีอักขระ 12 ตัวที่มีความหมายพิเศษคือเครื่องหมายแบ็กสแลชเครื่องหมาย\รูปหมวกเครื่องหมาย^ดอลลาร์$จุดหรือจุด.แถบแนวตั้งหรือสัญลักษณ์ท่อแนวตั้ง|เครื่องหมายคำถามเครื่องหมาย?ดอกจันหรือดาว*เครื่องหมายบวกเครื่องหมาย+วงเล็บเปิดวงเล็บวงเล็บ(ปิด)และวงเล็บเหลี่ยม[เปิด{, วงเล็บปีกกาเปิด, อักขระพิเศษเหล่านี้มักจะเรียกว่า "metacharacters"
ดังนั้นหากคุณต้องการแยกเช่นจุด / จุด.ซึ่งหมายถึง " อักขระใด ๆ " ใน regex ให้ใช้เครื่องหมายแบ็กสแลช\เพื่อหลีกเลี่ยงอักขระพิเศษแต่ละตัวเช่นนั้นsplit("\\.")หรือใช้คลาสอักขระ[]เพื่อแทนอักขระตามตัวอักษรsplit("[.]")หรือใช้Pattern#quote()เพื่อ split(Pattern.quote("."))หลบหนีสตริงทั้งหมดเช่นดังนั้น
String[] parts = string.split(Pattern.quote(".")); // Split on period.
ในการทดสอบก่อนถ้าสตริงมีอักขระบาง (s) String#contains()เพียงแค่การใช้งาน
if (string.contains("-")) {
// Split it.
} else {
throw new IllegalArgumentException("String " + string + " does not contain -");
}
หมายเหตุนี่ไม่ได้ใช้การแสดงออกปกติ เพื่อที่จะใช้String#matches()แทน
หากคุณต้องการที่จะรักษาตัวอักษรแยกในส่วนที่เกิดขึ้นแล้วทำให้การใช้LookAround บวก ในกรณีที่คุณต้องการแยกตัวอักษรให้จบที่ด้านซ้ายมือให้ใช้ lookbehind เชิงบวกโดยการใส่คำนำหน้า?<=กลุ่มลงบนลวดลาย
String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556
ในกรณีที่คุณต้องการให้ตัวอักขระแยกส่วนจบลงทางด้านขวามือให้ใช้ lookahead ที่เป็นบวกโดยนำหน้า?=กลุ่มบนลวดลาย
String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556
หากคุณต้องการ จำกัด จำนวนชิ้นส่วนที่เกิดขึ้นคุณสามารถระบุจำนวนที่ต้องการเป็นอาร์กิวเมนต์ที่ 2 ของsplit()วิธีการ
String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42