FAQ

Java

JSP

Servlet


Advertisement



Which replace function works with regex?

More than often we need to manipulate a string, substitute characters inside a string. In Java, the String class, there are a couple of methods that we can use to complete this task.

1. public String replace(char oldChar, char newChar)

   This method "returns a new string resulting from replacing all occurrences of oldChar in this string with newChar."
   Both oldChar and newChar are single char.
   For example, String a = "This is a cat.";
   String b = a.replace('c', 'r');
   b has the value of "This is a rat.".

2. public String replace(CharSequence target, CharSequence replacement)

   This method "replaces each substring of this string that matches the literal target sequence with the specified literal replacement sequence."      
   String c = "This is a cat.";
   String d = c.replace("ca", "rabbi");
   d has the value of "This is a rabbit.".
  
   Note: this method only works with replacing a sub string with a string, it doesn't work with regex. For example:
  
   String e = "This is a cat.";
   String f = e.replace("\\s", "b");
   f is still "This is a cat.". Because the function is looking for a string like "\s" to replace.

   Sometimes, you need to replace many characters, regex comes handy. For example, you want to create a clean url for an article by using its title, but a title can contain special characters that may break your url. One way to do this is to strip out all the non-alphanumerics from the string. Then you will need to use the following method to handle regex target.

3. public String replaceAll(String regex, String replacement)

   This method "replaces each substring of this string that matches the given regular expression with the given replacement."

   String title = "Since When Do Politicians \"Care\" About Newspapers?";
   String result = title.replaceAll("[^a-zA-Z0-9\\s]", "");
   result = result.replaceAll("\\s", "-"); // replace white spaces to "-".
   The result is "Since-When-Do-Politicians-Care-About-Newspapers";

4. public String replaceFirst(String regex, String replacement)

   This method "replaces the first substring of this string that matches the given regular expression with the given replacement."

   String title = "Since When Do Politicians Care About Newspapers?";
   String result = title.replaceAll("[^a-zA-Z0-9\\s]", "");
   result = result.replaceAll("\\s", "-"); // replace white spaces to "-".
   The result is "Since-WhenDo Politicians Care About Newspapers?".


Printer-friendly version Printer-friendly version | Send this 
article to a friend Mail this to a friend

Previous Next vertical dots separating previous/next from contents/index/pdf Contents

  |   |