/*
Datei............: Aufg1107.java
Projekt..........: Einführung in die Java-Programmierung
Erstellt.........: 18.11.97, Guido Krüger
Geändert.........: --
Aufgabe..........: Musterlösung zu Aufgabe 11.07
Kommentare.......:

Diese Aufgabe läßt sich sehr leicht lösen. In einer einfachen
Schleife wird zunächst überprüft, ob der gesuchte String noch
im noch unbearbeiteten Teil des zu bearbeitenden Strings
enthalten ist. Ist dies nicht der Fall, wird der noch unbearbeitete
Teil an den bereits konvertierten Teil angehängt und alles
zusammen an den Aufrufer zurückgegeben. Andernfalls wird der 
Teilstring bis zum Auftreten des gesuchten Strings plus zusätzlich
der Ersatzstring an den bereits konvertierten Teil angehängt, 
der bereits bearbeitete Teilstring entsprechend verkürzt, und
die Schleife beginnt von vorne.
*/
public class Aufg1107
{
  public static void main(String args[])
  {
	String s;

	//Erster Test: Gleichlange Strings ersetzen
	s = "Der soll mir mal ein a für ein o vormachen";
	System.out.println(s);
	System.out.println(replaceString(s, "a", "o"));
	System.out.println();

	//Zweiter Test: kürzeren String durch längeren ersetzen
	s = "In diesem String werden alle er's durch xyz's ersetzt";
	System.out.println(s);
	System.out.println(replaceString(s, "er", "xyz"));
	System.out.println();

	//Dritter Test: längeren String durch kürzeren ersetzen
	s = "Hier wird gleich das kleine e weggehext";
	System.out.println(s);
	System.out.println(replaceString(s, "e", ""));
	System.out.println();
  }

  /**
   * Ersetzt in dem String s alle Vorkommen des String search durch
   * den String repl. search und repl müssen nicht gleich lang sein.
   * Ist repl leer, so werden alle Vorkommen von search aus s entfernt,
   * ist search leer, so wird s unverändert zurückgegeben.
   */
  public static String replaceString(String s, String search, String repl)
  {
	String ret;
	if (search.length() <= 0) {
	  ret = s;
	} else {
	  ret = "";
	  int pos;
	  while ((pos = s.indexOf(search)) != -1) {
		ret += s.substring(0, pos) + repl;
		s = s.substring(pos + search.length());
	  }
	  ret += s;
	}
	return ret;
  }

}

