Hallo,
ich haben ein String text der alles sein kann. Filenamen, Filecontent etc.
Nun möchte ich mehrere Strings in diesem text ersetzen. Soweit kein Problem.
einfach text.replace("a", "b").replace("c","d");
Ich habe nur das Problem das ein Substring das ersetzt wird vom anderen wiederum erkannt wird und falsch ersetzt wrid. Kleines Beispiel.
Torte -> Kirschtorte
torte -> kirschtorte
Das führt dazu das aus Torte -> Kirschkirschtorte wird, da zuerst der text nach Torte sucht und durch Kirschtorte ersetzt und dann torte durch kirschtorte in Kirschtorte ersetzen möchte und dann Kirschkirschtorte daraus wird.
Ne Idee wäre das ich den text zeichenweise durchgehe und bei einem match den String austausche. Quasi sliding window.
Nur haben die Strings unterschiedliche Längen. Heißt wenn ein String 2 Zeichen lang ist und einer 5 dann muss ich ich alle möglichen Kombination aus 2er und 5er Substrings überprüfen müsste
Gib es einen Weg mehrere replace-Strings unterschiedlicher Länge zu ersetzen und dabei den text nur einmal zu durchlaufen, um sowas wie oben zu vermeiden? Oder eine optimierte Variante von sliding window?
ich haben ein String text der alles sein kann. Filenamen, Filecontent etc.
Nun möchte ich mehrere Strings in diesem text ersetzen. Soweit kein Problem.
einfach text.replace("a", "b").replace("c","d");
Ich habe nur das Problem das ein Substring das ersetzt wird vom anderen wiederum erkannt wird und falsch ersetzt wrid. Kleines Beispiel.
Torte -> Kirschtorte
torte -> kirschtorte
Das führt dazu das aus Torte -> Kirschkirschtorte wird, da zuerst der text nach Torte sucht und durch Kirschtorte ersetzt und dann torte durch kirschtorte in Kirschtorte ersetzen möchte und dann Kirschkirschtorte daraus wird.
Ne Idee wäre das ich den text zeichenweise durchgehe und bei einem match den String austausche. Quasi sliding window.
Nur haben die Strings unterschiedliche Längen. Heißt wenn ein String 2 Zeichen lang ist und einer 5 dann muss ich ich alle möglichen Kombination aus 2er und 5er Substrings überprüfen müsste
Gib es einen Weg mehrere replace-Strings unterschiedlicher Länge zu ersetzen und dabei den text nur einmal zu durchlaufen, um sowas wie oben zu vermeiden? Oder eine optimierte Variante von sliding window?