StringReplace jeden dritten austauschen
-
Hallo,
Wie stell ich das an das ich mit der StringReplace Funkion zb jeden Dritten String austausch?
###text###
###text###
###text###
###text###
###text###
###text######text###
###text###
###meinstring###
###text###
###text###
###meinstring###Gruß
TheGeek
-
Wie sind denn die Strings bei dir gespeichert? Wenn die in einem TStringList-Objekt sind brauchst du doch nur eine Schleife über alles zu bauen und dort StringReplace für jeden dritten String aufzurufen.
-
Die Strings stehen in einem TStrings Objekt.
Mein Problem ist das ich jetzt nicht weiß wie man eben zb jeden Dritten ersetzen kann.Wenn ich TReplaceFlags leer lasse wird ja nur der erste ausgetauscht.
zb hab ich das hier:for (int i = 0; i < StringDaten3->Text.Length(); i++) { if (???) StringDaten3->Text = StringReplace(StringDaten3->Text, "<##ALT##>", "<##NEU##>",TReplaceFlags()); }
-
Hallo
Wo ist das Problem?
for (int i = 0; i < StringDaten3->Text.Length(); i+=3) // In Dreier-Schritten iterieren { StringDaten3->Strings[i] = StringReplace(StringDaten3->Strings[i], "<##ALT##>", "<##NEU##>",TReplaceFlags()); }
bis bald
akari
-
Der Schleifenkopf ist falsch. besser so.
for (int i = 0; i < StringDaten3->Count; i+=3) // In Dreier-Schritten iterieren
-
Hallo
Ja hast recht... passiert wenn man nicht noch alles selber testet.
bis bald
akari
-
Hey ho,
hier lernt man ja echt noch was dazu
Ich wußte nicht das das geht:
i+=3 // In Dreier-Schritten iterieren
habe mir das hier gebaut und es macht genau das was ich brauche (ja ich brauch den else zweig):
#include <math.h> for (int i = 0; i < StringDaten3->Count; i++) { if (fmod(i,3) == 0) StringDaten3->Text = StringReplace(StringDaten3->Text, "##alt##", "##neu##",TReplaceFlags()); else StringDaten3->Text = StringReplace(StringDaten3->Text, "##altalt##", "##neuneu##",TReplaceFlags()); }
Gut das der erste Code Vorschlag von Akari nicht gleich geklappt hat ... das hat mein Probierwahnsinn ein bisschen angeschoben.
Vielen Dank!
-
Schau dir akaris Variante nochmal genauer an. Bei dir ist noch ein Fehler drin.
Mit StringDaten3->Text greifst du immer auf den gesamten Inhalt der StringListe zu, was hier eigentlich nicht erwünscht ist.
-
Stimmt du hast recht. Es sollte so aussehen:
#include <math.h> for (int i = 0; i < StringDaten3->Count; i++) { if (fmod(i,3) == 0) StringDaten3->Strings[i] = StringReplace(StringDaten3->Strings[i], "##alt##", "##neu##",TReplaceFlags()); else StringDaten3->Strings[i] = StringReplace(StringDaten3->Strings[i], "##altalt##", "##neuneu##",TReplaceFlags()); }