Matcher क्लास का appendReplacement() मेथड एक StringBuffer ऑब्जेक्ट और एक स्ट्रिंग (रिप्लेसमेंट स्ट्रिंग) को पैरामीटर के रूप में स्वीकार करता है और, इनपुट डेटा को StringBuffer ऑब्जेक्ट में जोड़ता है, मिलान की गई सामग्री को रिप्लेसमेंट स्ट्रिंग से बदल देता है।
आंतरिक रूप से, यह मेथड इनपुट स्ट्रिंग से प्रत्येक वर्ण को पढ़ता है और स्ट्रिंग बफर में जोड़ता है, जब भी कोई मिलान होता है तो यह मिलान किए गए कंटेंट के भाग के बजाय रिप्लेसमेंट स्ट्रिंग को बफर में जोड़ता है और, मिलान किए गए सबस्ट्रिंग की अगली स्थिति से आगे बढ़ता है।
रिप्लेसमेंट स्ट्रिंग को इस मेथड में पास करते समय यदि आप "/" या "$" का उपयोग करते हैं तो उन्हें नियमित वर्ण नहीं माना जाएगा और एक अपवाद होगा:
उदाहरण 1 (समस्या प्रदर्शित करना)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuoteReplacement {
public static void main(String[] args) {
String str = " This is an example HTML script.
";
// बोल्ड टैग की सामग्री से मिलान करने के लिए रेगुलर एक्सप्रेशन
String regex = "(\\S+)";
System.out.println("इनपुट स्ट्रिंग: \n" + str);
// पैटर्न ऑब्जेक्ट बनाना
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("StringBuffer की सामग्री: \n" + sb.toString());
}
}
आउटपुट
इनपुट स्ट्रिंग:<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() मेथड के पैरामीटर के रूप में उपयोग किया जा सकता है।
उदाहरण 2 (quoteReplacement() के साथ समाधान)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuoteReplacement {
public static void main(String[] args) {
String str = "This is an example HTML script.
";
// बोल्ड टैग की सामग्री से मिलान करने के लिए रेगुलर एक्सप्रेशन
String regex = "(\\S+)";
System.out.println("इनपुट स्ट्रिंग: \n" + str);
// पैटर्न ऑब्जेक्ट बनाना
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("StringBuffer की सामग्री: \n" + sb.toString());
}
}
आउटपुट
इनपुट स्ट्रिंग: <p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p> StringBuffer की सामग्री: <p>This Bo$ld/Data$ an Bo$ld/Data$ HTML Bo$ld/Data$.</p>
उदाहरण 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 = "[#]";
// पैटर्न ऑब्जेक्ट बनाना
Pattern pattern = Pattern.compile(regex);
// स्ट्रिंग में कंपाइल्ड पैटर्न का मिलान
Matcher matcher = pattern.matcher(input);
// खाली स्ट्रिंग बफर बनाना
String str = Matcher.quoteReplacement("sampledata");
System.out.println(str);
}
}
आउटपुट
sampledata