Lớp java.util.regex.Matcher đại diện cho một engine thực hiện các phép toán khớp khác nhau. Không có constructor cho lớp này, bạn có thể tạo/nhận đối tượng của lớp này bằng phương thức matcher() của lớp java.util.regex.Pattern.
Phương thức appendReplacement() của lớp này chấp nhận một đối tượng StringBuffer và một String (chuỗi thay thế) làm tham số, nối dữ liệu đầu vào vào StringBuffer, thay thế nội dung khớp bằng chuỗi thay thế.
Bên trong, phương thức này đọc từng ký tự từ chuỗi đầu vào và nối vào StringBuffer, khi có khớp xảy ra, nó nối chuỗi thay thế thay vì phần nội dung khớp của chuỗi vào buffer, và tiếp tục từ vị trí tiếp theo của chuỗi con khớp.
Ví dụ 1: Thay thế nội dung thẻ <b>
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class appendReplacementExample {
public static void main(String[] args) {
String str = "<p>This <b>is</b> an <b>example</b>HTML <b>script</b>.</p>";
String regex = "<b>(\\S+)</b>";
System.out.println("Chuỗi đầu vào: \n" + str);
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "BoldData");
}
matcher.appendTail(sb);
System.out.println("Nội dung StringBuffer: \n" + sb.toString());
}
}
Kết quả
Chuỗi đầu vào: <p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p> Nội dung StringBuffer: This BoldData an BoldData HTML BoldData. <p>This BoldData an BoldData HTML BoldData.</p>
Ví dụ 2: Xóa ký tự đặc biệt
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class appendReplacementExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập văn bản đầu vào: ");
String input = sc.nextLine();
String regex = "[#$&+=@|<>-]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
int count = 0;
StringBuffer buffer = new StringBuffer();
System.out.println("Xóa ký tự đặc biệt khỏi chuỗi");
while (matcher.find()) {
count++;
matcher.appendReplacement(buffer, "");
}
matcher.appendTail(buffer);
System.out.println("Ký tự đặc biệt xuất hiện " + count + " lần");
System.out.println("Văn bản sau khi xóa: \n" + buffer.toString());
}
}
Kết quả
Nhập văn bản đầu vào: Hello# how$ are& yo|u welco<me to> Tut-oria@ls@po-in#t. Xóa ký tự đặc biệt khỏi chuỗi Ký tự đặc biệt xuất hiện 11 lần Văn bản sau khi xóa: Hello how are you welcome to Tutorialspoint.
Lưu ý: Luôn gọi appendTail() sau vòng lặp để thêm phần còn lại của chuỗi.