Replace every occurences of a string within a string

From CodeCodex

Implementations[edit]

Java[edit]

Since Java String are immutable (can't be changed), we return a new String.

 public static String replace (String target, String from, String to) {   
  //   target is the original string
  //   from   is the string to be replaced
  //   to     is the string which will used to replace
  //  returns a new String!
  int start = target.indexOf(from);
  if (start == -1) return target;
  int lf = from.length();
  char [] targetChars = target.toCharArray();
  StringBuffer buffer = new StringBuffer();
  int copyFrom = 0;
  while (start != -1) {
    buffer.append (targetChars, copyFrom, start-copyFrom);
    buffer.append (to);
    copyFrom = start + lf;
    start = target.indexOf (from, copyFrom);
    }
  buffer.append (targetChars, copyFrom, targetChars.length - copyFrom);
  return buffer.toString();
  }

The String.replaceAll() method can also be used. You need to provide a regular expression. [JDK1.4]

 public class Test{
  public static void main(String[] args){
    String text = "hello world from www.rgagnon.com : hello world";

    System.out.println
      (text.replaceAll("(?:hello world)+", "bonjour le monde"));

    System.out.println
      (text.replaceFirst("(?:hello world)+", "bonjour le monde"));
      
    /*
      output :
      bonjour le monde from www.rgagnon.com : bonjour le monde
      bonjour le monde from www.rgagnon.com : hello world
    */  
  }
}

Keep in mind, that you need to escape characters like $ or | since they have special meaning when used in a regular expression.

Since JDK 1.5, the String.replace() method can also be used. It does not take a regular expression so you don't need to worry about escaping special characters.

 public class Test{
  public static void main(String[] args){
    String text = "hello world from www.rgagnon.com : hello world";

    System.out.println
      (text.replace("hello world", "bonjour le monde"));
      
    /*
      output :
      bonjour le monde from www.rgagnon.com : bonjour le monde
    */  
  }
}