![]() |
Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)
Hi,
wie kann man aus asd bla das machen: asd bla ? Ich habe bereits zu dieser Aufspaltung diesen Code:
Delphi-Quellcode:
Der Code durchsucht nach Leerzichen und überprüft, ob mehrere Leerzeichen vorhanden sind, da nicht jedes Leerzeichen gleich eine neue Zeile sein soll, sondern z.B. zwei Leerzeichen (direkt hintereinander) nur eine neue Zeile ergeben sollen. Mein Problem ist jetzt, das Ausgeben von "asd" und "bla" (soll wie oben aussehen). Wie könnte man dies lösen ?
procedure TLexer.ScanLine(s : String);
var i : Integer; begin i := Pos(s, ' '); if s[i + 1] = ' ' then WriteLn('Mehrere Leerzeichen') else WriteLn('Ein Leerzeichen'); end; |
Re: Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)
Öhm warum ersetzt du nicht alle zwei leerzeichen durch ein #13+#10 ???
Dazu gibts aber auch schon einiges im Forum ;-) |
Re: Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)
Ja können maximal 2 Leerzeichen hintereinander stehen oder ist die mögliche Anzahl der Leerzeichen nach oben offen? Wenn nein, dann mach doch einfach:
Delphi-Quellcode:
s := StringReplace(s, ' ', #13 + #10, [rfReplaceAll]);
s := StringReplace(s, ' ', #13 + #10, [rfReplaceAll]); writeln(s); |
Re: Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)
Hi,
oder von Hand (jedenfalls so in etwa):
Delphi-Quellcode:
Alle Angaben ohne Gewehr :wink:
procedure TForm1.ScanLine(zeile : String);
var i : integer; neu : string; begin Memo1.Clear; neu := ''; for i := 1 to length(zeile) do begin if zeile[i] <> ' ' then neu := neu + zeile[i]; if (i > 1) AND (zeile[i] = ' ') AND (zeile[i-1] <> ' ') OR (i = length(zeile)) then begin Memo1.Lines.Add(neu); neu := ''; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Scanline(edit1.Text); end; MJ |
Re: Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)
der Ansatz von Maja Jessica ist nicht schlecht. Allerdings würde ich nicht ständig ein Zeischen an den String anhängen sondern den Buffer gleich auf die maximal mögliche größe setzen und am Ende einmal die größe korrigieren. Ist bedeutend schneller da nicht jedesmal neu speicher angefordert werden muss und der String umkopiert werden muss (was so intern zwangsläufig passiert)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz