![]() |
String zerlegen; Trenner
Hallo, Delphi-Praktiker,
ich erinnere mich, daß es für Stringlists die Möglichkeit gibt, Substrings anhand eines Trenners zu extrahieren. (SirThornberry erwähnt das auch in einem Beitrag vom 17.07.2004) Bloß: Ich finde diese Funktion nicht. Wie heißt das Ding ? Betste Grüße Klaus-Peter |
Re: String zerlegen; Trenner
Du musst den .Delimiter setzen (Trennzeichen) und sagst dann Liste.DelimitedText := 'Dein;Text'.
Den Rest macht die Liste von alleine. Allerdings habe ich die Erfahrung gemacht, dass die TStringList auch gerne bei sonstigen Trennern wie Leerzeichen, Kommas, Semikola im Text trennt, auch wenn in Delimiter was anderes festgelegt war. |
Re: String zerlegen; Trenner
|
Re: String zerlegen; Trenner
Delphi-Quellcode:
Aber Achtung: Leerzeichen führen zusätzlich zur Trennung
var
sl: TStrings; ... begin sl := TStringList.Create; ... sl.delimiter := '<Trennzeichen>'; sl.DelimitedText := '<Text>'; s1 := sl.Strings[0]; //1. Teilstring s2 := sl.Strings[1]; //2. Teilstring ... |
Re: String zerlegen; Trenner
Zitat:
Frage: Wie heißt die Delphi-eigene Funktion, auf die Du dort hinweist ? Den Tip von Sebastian schaue ich mir an. Klaus-Peter |
Re: String zerlegen; Trenner
Das ist genau das. Und mein Tip ist das gleiche, was mKinzler mit Beispielcode geliefert hat.
Delimiter setzen, Text zuweisen, fertig. Aber das geht glaub ich erst seit Delphi 5. |
Re: String zerlegen; Trenner
Hallo,
im Prinzip ist Alles prima, der Tip von mkinzler und Sebastian läuft, aber ... Sebastian hat leider recht: Als Trenner habe ich '|' gesetzt, aber das Blank wird auch als (zusätzlicher) Trenner interpretiert. (It's not a bug, it's a feature ???) 1. Was soll der Unsinn (der es doch wohl ist) ? 2. Kann man das sl.DelimitedText:= <Text> trotzdem zu sinnvollem Laufen bringen ? Klaus-Peter |
Re: String zerlegen; Trenner
Eine reichlich arme Lösung wäre ein davorgesetztes StringReplace, das die Leerzeichen entweder ganz entfernt, wenn sie nicht benötigt werden, oder aber die Leerzeichen in wenig genutzte Symbole verwandelt, falls du sie brauchst. Du solltest im letzteren Fall allerdings noch über die Strings iterieren und die Ersetzung wieder rückgängig machen, sofern dann keine neue Trennung durchgeführt wird. Wie gesagt, reichlich arm.
|
Re: String zerlegen; Trenner
Hallo, Philip,
die Eleganz läßt, wie du richtig sagst, dabei sicher zu wünschen übrig. Man könnte dann fast diese Funktion wieder selbst schreiben. Klaus-Peter |
Re: String zerlegen; Trenner
Wo wir schon dabei sind: Warum machst du das eigentlich nicht? Eine einfache while-Schleife mit einem PosEx-Aufruf im Innern sollte dafür doch ausreichen...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 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 by Thomas Breitkreuz