Wie kann man Teile eines Strings suchen und ersetzen?
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.