Mehrere Leerzeichen herrausfiltern in einer RichTextBox
-
Hallo bietet c++ eine Funktion die alle Leerzeichen herausfiltert die doppelt vorkommen und durch ein einzelnes Ersetzen tut
-
// zwei Leerzeichen zu einem machen StringReplace(DeinText, " ", " ", TReplaceFlags() << rfReplaceAll);
-
z.B. StringReplace
[Edit:] wieder zu langsam

-
sorry hab mich falsch ausgedrückt es sollen nicht nur alle die doppelt vorkommen ausgefiltert werden sondern auch alle die 3 mal vorkommen und die die viermal da sind usw.
habs bisher so gelöst
Leerzeichen=STZeile.AnsiPos(' '); for(i=Leerzeichen;i<STZeile.Length();i++) { if (STZeile[i]!=' ') { Leerzeichen=i-1; break; } }Aber des ist halt umständlich
-
kommst du zufällig mit std::unique() zurecht? (benötigt noch eine passende "Vergleichs"Funktion)
-
dann mach doch ne schleife drum!
while (DeinText.Pos(" ")) DeinText = StringReplace(DeinText, " ", " ", TReplaceFlags() << rfReplaceAll);
-
ob jetzt while oder for schleife sollte nix ändern, was macht den unique da bin ich völlig unbedarft
-
unique() löscht alle Duplikate aus einer Sequenz (wobei das Prädikat angibt, was als "Duplikat" gilt).
Aber was hast du eigentlich gegen Sunday's Schleifenkonstruktion? Die verkürzt solange doppelte Leerzeichen, bis sie keine mehr findet, macht also letzendlich genau das, was du willst.
-
bierber schrieb:
ob jetzt while oder for schleife sollte nix ändern
Selbstverständlich tut es das. Die Schleife sorgt dafür, das es immer nur noch einzelne Leerzeichen im String gibt. Probier es doch mal aus.
/Edit : zu langsam...
bis bald
akari
-
sorry hatte ich einen Denkfehler drin die For Schleife bringt mich ja nur zum letzten leerzeichen, aber da das reicht kamm bei mir der Gedankendreher im kopf das sie das gleiche tun.