Please refer to my previous article for regular expression theory, classes and syntax. In this post I am posting a code that I wrote which does a single word replacement on a string using Pattern and Matcher. The example is straightforward. Please review the comments in the code below. I have placed useful comments at various statements in the code.
package com.kushal.regularexpressions;
/**
* @author Kushal Paudyal
* www.sanjaal.com/java
* Last Modified On 2009-SEPT-16
*
* Using Regular Expressions To Replace
* A Single Word From The String.
*/
import java.util.regex.*;
public class ReplaceSingleWord {
static String originalString = "Google is Good. "
+ "Google is Innovative. "
+ "We think Google is the technology of the era";
static String replaceWhat = "Google";
static String replaceWith = "Sanjaal";
public static void main(String[] args) throws Exception {
System.out.println("...Before Replacement: \n" + originalString + "\n");
/**
* Create a pattern to match Google.
* Pattern.compile () compiles the given regular
* expression into a pattern
*/
Pattern p = Pattern.compile(replaceWhat);
// Create a matcher with an input string
/**
* Creating a matcher with the original input string.
*/
Matcher m = p.matcher(originalString);
StringBuffer sb = new StringBuffer();
System.out.println("...Replacing \'" + replaceWhat + "\' with \'"
+ replaceWith + "\'.\n");
/**
* Try to find the next subsequence of the input sequence
* which patches the pattern.
*/
boolean result = m.find();
/**
* Looping through to create a new string
* with replacement applied.
*/
while (result) {
m.appendReplacement(sb, replaceWith);
result = m.find();
}
/**
* Add the last segment of input to the new String
*
* appendTail () method Implements a terminal append-and-replace step.
* This method reads characters from the input sequence,
* starting at the append position, and appends them to
* the given string buffer. It is intended to be invoked
* after one or more invocations of the appendReplacement
* appendReplacement method in order to copy the
* remainder of the input sequence.
* Parameters:
* sb --> The target string buffer
* Returns:
* The target string buffer
*/
m.appendTail(sb);
System.out.println("...After Replacement:\n" + sb.toString());
}
}
====================
Output of this program:
…Before Replacement:
Google is Good. Google is Innovative. We think Google is the technology of the era
…Replacing ‘Google’ with ‘Sanjaal’.
…After Replacement:
Sanjaal is Good. Sanjaal is Innovative. We think Sanjaal is the technology of the era
Originally posted 2009-09-16 11:43:59.