Wie kann man Teile eines Strings suchen und ersetzen?

Die Klasse String stellt einige Methoden bereit, die zum Suchen und Ersetzen von Teilen eines Strings dienen können.

Das Suchen und Ersetzen eines Teils eines Strings kann in Java auf unterschiedliche Arten erfolgen. In diesem Artikel sollen Möglichkeiten demonstriert werden, die mit Hilfe von Methoden der Klasse String selbst realisiert werden. Ein weiteres, sehr mächtiges Verfahren kann mittels Regulärer Ausdrücke erfolgen und wird im Artikel Teilstrings in Strings finden besprochen.

Ebenfalls mittels eines Regulären Ausdrucks arbeitet die Methode replaceAll(String regex, String ersatz). Sie sucht nach Stringbereichen, auf die das Muster regex passt und ersetzt diese durch ersatz.

String str = "Drei Chinesen mit dem Kontrabass...";
String regex = "[eiou]+";
String ersatz = "a";
str = str.replaceAll(regex, ersatz);
System.out.println(str); // Dra Chanasan mat dam Kantrabass...

Ein anderes Verfahren ergibt sich aus der Verwendung von replace(CharSequence suche, CharSequence ersatz). Hier werden zwei Objekte vom Typ CharacterSequence als Parameter für Suche und Ersatz entgegengenommen. Dies hat den Vorteil, dass neben String auch StringBuilder, StringBuffer und die anderen das Interface CharSequence implementierenden Klassen herangezogen werden können. Intern arbeitet replace() allerdings ebenfalls mittels Regulärer Ausdrücke, indem es auf replaceAll() zurückgreift.
Die Methode ist zudem überladen und kann auch zwei char-Argumente übergeben bekommen.

String str = "Drei Chinesen mit dem Kontrabass...";
String suche = "i";
String ersatz = "o";
str = str.replace(suche, ersatz);
System.out.println(str); // Dreo Chonesen mot dem Kontrabass...

Soll lediglich das erste Vorkommen eines Strings ersetzt werden, so bietet sich replaceFirst(String regex, String replacement) an.

String str = "Drei Chinesen mit dem Kontrabass...";
String suche = "i";
String ersatz = "u";
str = str.replaceFirst(suche, ersatz);
System.out.println(str); // Dreu Chinesen mit dem Kontrabass...

Eine andere Herangehensweise kann genutzt werden, wenn nur in einer Sektion eines Strings gesucht werden soll. Hier werden die String-Methoden indexOf(String str) und substring(int beginIndex, int endIndex) angewendet. Erstere ermittelt die Position des ersten Vorkommens eines gesuchten Teilstrings, letztere liefert den Teilstring zwischen zwei Positionen.
Im Beispiel wird innerhalb einer Schleife ab dem vorgegebenen Startindex die Position des gesuchten Teilstrings ermittelt. Wird dieser gefunden, wird der resultierende String aus dem Anfangssegment bis zur Position des Fundes, dem Ersatzstring und dem Reststring nach dem gesuchten Teilstring zusammengesetzt.

String str = "Drei Chinesen mit dem Kontrabass...";
String suche = "e";
String ersatz = "u";
int start = 5;
int end = 12;
while (start != -1 && start <= end) {
    if (str.substring(start, start + suche.length()).equals(suche)) {
        str = str.substring(0, start) + ersatz + str.substring(start + suche.length(), str.length());
    }
    start = str.indexOf(suche, start + ersatz.length());
}
System.out.println(str); // Drei Chinusun mit dem Kontrabass...

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.