So ersetzen Sie beliebigen Text in einer Zeichenfolge in C++

August 27

Die C++-String-Bibliothek hat einige nützliche Funktionen für die Bearbeitung von Zeichenketten, aber keine allgemeine Suche und ersetzen. Zwar gibt es eine Vielzahl von Informationen über optimierte Algorithmen zur Durchführung beliebiger Textersetzung, beinhalten viele Algorithmen komplexer Datenstrukturen und schwer verständliche Techniken wie Zeigerarithmetik. Für die meisten Programme suchen und ersetzen keinen Leistungsengpass so macht es mehr Sinn, einen einfachen, leicht verständlichen Algorithmus verwenden. Dies ist möglich durch die Nutzung einiger der vorhandenen String-Funktionen, die Low-Level-Manipulation zu behandeln.

Anweisungen

1 Schreiben Sie den Umriss Ihrer Zeichenfolge ersetzen-Funktion:

String ReplaceSubstring (String Quelle, Zeichenfolgenübereinstimmung, Zeichenfolge ersetzen){Zeichenfolge out = "";Rückkehr aus;}

2 Fügen Sie eine Schleife, die alle Teilzeichenfolge findet in der Zeichenfolge übereinstimmt. Die Variable Lastpos wird hilfreich sein, wenn Sie starten Sie den Code zum Erstellen der neuen Zeichenfolge hinzufügen:

Size_t pos = 0; Starten Sie die Suche beim ersten ZeichenSize_t Lastpos = 0;während ((pos = source.find (Match, pos))! = string::npos) //loop bis keine Übereinstimmungen gefunden werden{POS = pos + match.lengh(); Starten Sie die Suche für die nächste Übereinstimmung am Ende dieses matchLastPos = pos;}

3 Bauen Sie die Ausgabezeichenfolge wie Übereinstimmungen gefunden werden:

Size_t pos = 0; Starten Sie die Suche beim ersten ZeichenSize_t Lastpos = 0;während ((pos = source.find (Match, pos))! = string::npos) //loop bis keine Übereinstimmungen gefunden werden{Ausgabe += source.substr (Lastpos, pos - Lastpos); Fügen Sie alle Zeichen, die über ausgelassen wurden.Ausgabe += ersetzen;POS = pos + match.lengh(); Starten Sie die Suche für die nächste Übereinstimmung am Ende dieses matchLastPos = pos;}Ausgabe += source.substr(lastpos); Den Rest der Quellzeichenfolge hinzufügen