C#: Das erste Vorkommen eines Strings in einen anderen String finden und ersetzen

Wenn man viel mit C# zum Beispiel in Visual Studio programmiert, kommt es auch immer wieder vor, dass man Zeichenketten (Strings) verarbeiten möchte. Eine Problemstellung kann dabei sein, dass man innerhalb eines Strings ein Wort, bestimmte Zeichen oder ganze Sätze, also einen Substring finden möchte um diesen bespielsweise durch etwas anderes zu ersetzen.

Replace() funktioniert nicht

Bekanntlich gibt es bei Programmiersprachen immer viele oder mehrere Möglichkeiten, um zum Zeil zu kommen. Eine naheliegende Variante wäre einfach die Replace-Funktion zu verwenden á la:

myText = myText.Replace("searchString", "replaceString");

Dabei ist searchString der gesuchte Substring und replaceString die Zeichenkette mit welcher wir searchString ersetzen wollen. Durchsucht wird in diesem Fall die Zeichenkette myText.

Das Problem dabei ist, dass die Replace-Funktion alle Vorkommen von searchString ersetzt. In unserer Fragestellungen wollen wir aber nur das erste Vorkommen eines bestimmten gesuchten Strings ersetzten. Dass heißt also, dass man Replace nur benutzen kann, wenn man alle Vokommen ersetzen möchte.

Lösung

Man muss also zuerst die Position ermitteln an welcher die Zeichenfolge zuerst vorkommt. Das geht über die Funktion IndexOf(). Danach entfernt man den gesuchten String aus der Zeichenfolge (Remove()-Funktion), um dann den neuen String einzufügen (Insert()-Funktion). Im C#-Code sieht das Ganze dann wie folgt aus, wobei int i der null-basierte Integerwert ist, an welcher Stelle searchString das erste mal gefunden wurde.

int i = myText.IndexOf("searchString");
myText = myText.Remove(i, "searchString".Length);
myText = myText.Insert(i, "replaceString");

 

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert