Matcher ক্লাসের appendReplacement() মেথড একটি StringBuffer অবজেক্ট এবং একটি স্ট্রিং (প্রতিস্থাপন স্ট্রিং) প্যারামিটার হিসেবে গ্রহণ করে এবং, ইনপুট ডেটাটিকে StringBuffer অবজেক্টে যুক্ত করে, মিলে যাওয়া কন্টেন্টকে প্রতিস্থাপন স্ট্রিং-এ প্রতিস্থাপন করে।
অন্তর্নিহিতভাবে, এই মেথড ইনপুট স্ট্রিং থেকে প্রতিটি ক্যারেক্টার পড়ে এবং স্ট্রিং বাফারে যুক্ত করে, যখনই একটি মিল ঘটে তখন এটি মিলে যাওয়া কন্টেন্টের অংশের বদলে প্রতিস্থাপন স্ট্রিংটি বাফারে যুক্ত করে এবং, মিলে যাওয়া সাবস্ট্রিং-এর পরবর্তী পজিশন থেকে এগিয়ে যায়।
প্রতিস্থাপন স্ট্রিং এই মেথডে পাস করার সময় আপনি যদি "/" বা "$" ব্যবহার করেন তবে এগুলো রেগুলার ক্যারেক্টার হিসেবে বিবেচনা হবে না এবং এক্সেপশন হবে:
উদাহরণ ১
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>";
// বোল্ড ট্যাগের কন্টেন্ট মিলাতে রেগুলার এক্সপ্রেশন
String regex = "<b>(\\S+)</b>";
System.out.println("Input string: \n" + str);
// Pattern অবজেক্ট তৈরি
Pattern pattern = Pattern.compile(regex);
// স্ট্রিং-এ কম্পাইল করা প্যাটার্ন মিলানো
Matcher matcher = pattern.matcher(str);
// খালি একটি স্ট্রিং বাফার তৈরি
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() );
}
}
আউটপুট
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)
Matcher ক্লাসের quoteReplacement মেথড একটি স্ট্রিং মান গ্রহণ করে এবং একটি লিটারেল প্রতিস্থাপন স্ট্রিং ফেরত দেয়। অর্থাৎ দেওয়া স্ট্রিং-এ / এবং $ ক্যারেক্টারগুলো উপেক্ষা করা হয় এবং ফলাফলটি appendReplacement() মেথডের প্যারামিটার হিসেবে ব্যবহার করা যায়।
উদাহরণ ২
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>";
// বোল্ড ট্যাগের কন্টেন্ট মিলাতে রেগুলার এক্সপ্রেশন
String regex = "<b>(\\S+)</b>";
System.out.println("Input string: \n" + str);
// Pattern অবজেক্ট তৈরি
Pattern pattern = Pattern.compile(regex);
// স্ট্রিং-এ কম্পাইল করা প্যাটার্ন মিলানো
Matcher matcher = pattern.matcher(str);
// খালি একটি স্ট্রিং বাফার তৈরি
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() );
}
}
আউটপুট
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>
উদাহরণ ৩
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 = "[#]";
// Pattern অবজেক্ট তৈরি
Pattern pattern = Pattern.compile(regex);
// স্ট্রিং-এ কম্পাইল করা প্যাটার্ন মিলানো
Matcher matcher = pattern.matcher(input);
// খালি একটি স্ট্রিং বাফার তৈরি
String str = Matcher.quoteReplacement("sampledata");
System.out.println(str);
}
}
আউটপুট
sampledata