Lớp Pattern trong gói java.util.regex là biểu diễn đã biên dịch của một biểu thức chính quy.
Phương thức split() của lớp này nhận một đối tượng CharSequence đại diện cho chuỗi đầu vào làm tham số và, tại mỗi lần khớp, nó tách chuỗi đã cho thành một token mới và trả về mảng chuỗi chứa tất cả các token.
Ví dụ 1
import java.util.regex.Pattern;
public class SplitMethodExample {
public static void main(String args[]) {
// Biểu thức chính quy để tìm chữ số
String regex = "(\\s)(\\d)(\\s)";
String input = " 1 Name:Radha, age:25 2 Name:Ramu, age:32 3 Name:Rajev, age:45";
// Biên dịch biểu thức chính quy
Pattern pattern = Pattern.compile(regex);
// Kiểm tra xem có khớp không
if (pattern.matcher(input).find())
System.out.println("Chuỗi đã cho chứa chữ số");
else
System.out.println("Chuỗi đã cho không chứa chữ số");
// Tách chuỗi
String strArray[] = pattern.split(input);
for (int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}
Kết quả
Chuỗi đã cho chứa chữ số Name:Radha, age:25 Name:Ramu, age:32 Name:Rajev, age:45
Phương thức này cũng chấp nhận một giá trị nguyên đại diện cho số lần mẫu được áp dụng. Tức là bạn có thể quyết định độ dài của mảng kết quả bằng cách chỉ định giá trị limit.
Ví dụ 2 (với limit)
import java.util.regex.Pattern;
public class SplitMethodExample {
public static void main(String args[]) {
// Biểu thức chính quy để tìm chữ số
String regex = "(\\s)(\\d)(\\s)";
String input = " 1 Name:Radha, age:25 2 Name:Ramu, age:32" +
" 3 Name:Rajeev, age:45 4 Name:Raghu, age:35" +
" 5 Name:Rahman, age:30";
// Biên dịch biểu thức chính quy
Pattern pattern = Pattern.compile(regex);
// Kiểm tra xem có khớp không
if (pattern.matcher(input).find())
System.out.println("Chuỗi đã cho chứa chữ số");
else
System.out.println("Chuỗi đã cho không chứa chữ số");
// Tách chuỗi với limit = 4
String strArray[] = pattern.split(input, 4);
for (int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}
Kết quả
Chuỗi đã cho chứa chữ số Name:Radha, age:25 Name:Ramu, age:32 Name:Rajeev, age:45 4 Name:Raghu, age:35 5 Name:Rahman, age:30