Phương thức appendReplacement () của lớp Matcher chấp nhận một đối tượng StringBuffer và một String (chuỗi thay thế) làm tham số và nối dữ liệu đầu vào vào đối tượng StringBuffer, thay thế nội dung phù hợ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à thêm bộ đệm Chuỗi, bất cứ khi nào khớp xảy ra, nó sẽ nối chuỗi thay thế thay vì phần nội dung phù hợp của chuỗi vào bộ đệm và tiến hành từ vị trí tiếp theo của chuỗi con đã khớp.
Trong khi chuyển chuỗi thay thế tới phương thức này, nếu bạn sử dụng “/” hoặc “$”, chúng sẽ không được coi là ký tự thông thường và xảy ra ngoại lệ -
Ví dụ 1
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuoteReplacement {
public static void main(String[] args) {
String str = " <p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>";
//Regular expression to match contents of the bold tags
String regex = "<b>(\\S+)</b>";
System.out.println("Input string: \n"+str);
//Creating a pattern object
Pattern pattern = Pattern.compile(regex);
//Matching the compiled pattern in the String
Matcher matcher = pattern.matcher(str);
//Creating an empty string buffer
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "sampledata$" );
//Matcher.quoteReplacement("Bo$ld/Data$"));
}
matcher.appendTail(sb);
System.out.println("Contents of the StringBuffer: \n"+ sb.toString() );
}
} Đầu ra
Input string:<p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>
Exception in thread "main" java.lang.IllegalArgumentException: Illegal group reference: group index is missing at java.util.regex.Matcher.appendReplacement(Unknown Source) at OCTOBER.matcher.QuoteReplacement.main(QuoteReplacement.java:18)
Phương thức Thay thế trích dẫn của lớp Matcher chấp nhận một giá trị chuỗi và trả về một chuỗi thay thế theo nghĩa đen. tức là các ký tự / và $ bị bỏ qua trong chuỗi đã cho và kết quả có thể được sử dụng làm tham số cho appendReplacement () phương pháp.
Ví dụ 2
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuoteReplacement {
public static void main(String[] args) {
String str = "<p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>";
//Regular expression to match contents of the bold tags
String regex = "<b>(\\S+)</b>";
System.out.println("Input string: \n"+str);
//Creating a pattern object
Pattern pattern = Pattern.compile(regex);
//Matching the compiled pattern in the String
Matcher matcher = pattern.matcher(str);
//Creating an empty string buffer
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, Matcher.quoteReplacement("Bo$ld/Data$"));
}
matcher.appendTail(sb);
System.out.println("Contents of the StringBuffer: \n"+ sb.toString() );
}
} Đầu ra
Input string: <p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p> Contents of the StringBuffer: <p>This Bo$ld/Data$ an Bo$ld/Data$ HTML Bo$ld/Data$.</p>
Ví dụ 3
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuoteReplacementExample {
public static void main(String[] args) {
String input = "This is sample text";
String regex = "[#]";
//Creating a pattern object
Pattern pattern = Pattern.compile(regex);
//Matching the compiled pattern in the String
Matcher matcher = pattern.matcher(input);
//Creating an empty string buffer
String str = Matcher.quoteReplacement("sampledata");
System.out.println(str);
}
} Đầu ra
sampledata