Entwickler-Ecke
Sonstiges (Delphi) - String teilen
|TF|Alucard - Di 13.04.04 19:16
Titel: String teilen
hi,
weiß jemand wie ich möglichst kurz einen String nach jedem Zeichen trennen kann und jedes Zei´chen einzelnt neu in Variablen speichern kann?
mfG |TF|Alucard
Delete - Di 13.04.04 19:22
Tja, sorry, auch hier bleibt´s beim Verweis auf die Suche:
EXPLODE,
EXPLODE. Ist eine Funktion, die Luckie gepostet hat. Orientier dich daran, und du wirst fündig werden.
|TF|Alucard - Di 13.04.04 19:33
Also das du (@MathiasSimmack) Links liebst hab ich mit gekriegt, aber ich raff diese Beispiele nicht; könnte die mir vielleicht jemand mal erklären? [@erklären = definieren (ohne Link)]
Delete - Di 13.04.04 19:45
|TF|Alucard hat folgendes geschrieben: |
Also das du (@MathiasSimmack) Links liebst hab ich mit gekriegt, [...] |
Das weniger. Ich wollte dir nur (wieder einmal) zeigen, dass du entsprechenden Quellcode bereits finden kannst. Da ich aber davon ausgehen muss, dass du den Suchbegriff nicht kennst, gebe ich ihn vor. Dazu sind die Suchtags schließlich da. Ich muss nicht schreiben: Such mal nach
explode (was du vermutlich eh nicht machen würdest), sondern ich kann dich direkt an die Suchergebnisse verweisen.
Aber ernsthaft -
Du willst wirklich eine Erklärung?
Ganz ohne Link?
(Achtung, Provokation!) Auch ohne Code?
Du gehst deinen String vom Anfang an durch bis du auf dein Trennzeichen stößt. Das kann ein Komma sein, eine Pipe |, ein Semikolon ... was immer du willst. Alles davor kopierst du in ein dynamisches String-Array. Dann merkst du dir die neue Startposition und führst die Suche fort bis du wieder auf das Trennzeichen stößt. Jetzt kopierst du alles von der neuen Startposition bis zum zweiten gefundenen Trenner in den nächsten Eintrag des dynamischen Arrays. Und so geht es weiter bis zum Ende des Strings.
Aber mal ehrlich: Wenn du nach
explode suchst, kommst du schneller zum Ziel und hast sofort verwertbaren Quellcode. Auf die Schnelle ein DP-Link:
explode [
http://www.delphipraxis.net/topic3816_ein+dynamisches+array+aus+einem+string+erzeugen.html&highlight=explode].
bms - Di 13.04.04 20:08
Wenn du nur einzelne Zeichen auslesen willst, dann kannst du mit Copy machen.
X := Copy(S, 4, 2);
Kopiert aus dem String S ab dem 4'ten Zeichen 2 Zeichen in die Vaiable X.
Delete - Di 13.04.04 20:30
Ich sehe gerade was: Wenn ich die Frage wörtlich nehme:
Zitat: |
einen String nach jedem Zeichen trennen |
dann ist
explode wohl nicht das richtige, denn diese Funktion geht von der Situation aus, dass ein String anhand
eines fest vorgegebenen Zeichens in mehrere Teile getrennt wird. Aber der o.g. Fall ist auch nicht gerade schwer -
1. Man nehme eine Stringliste und als Ausgangsbasis den berühmten Spruch:
Delphi-Quelltext
1: 2: 3: 4: 5:
| s := 'Hallo, Welt!';
sl := TStringList.Create; if(sl <> nil) then try |
2. In einer Schleife läuft man vom ersten Buchstaben bis zum letzten durch. (Für so genannte
noobs: Da man vorher vielleicht nicht weiß wie lang der String ist, benutzt man schlicht und einfach die Funktion "length", die die Länge zurückliefert)
Delphi-Quelltext
1:
| for i := 1 to length(s) do |
3. Jedes einzelne Zeichen des Strings kann nun über den Schleifenwert "i" angesprochen oder anderweitig benutzt werden. In unserem Fall hängen wir das Zeichen an die Stringliste ran:
4. Jetzt die Kontrolle: Memo auf die Form und ausprobiert ob die Stringliste auch wirklich was enthält:
Delphi-Quelltext
1: 2:
| Memo1.Clear; Memo1.Lines.Add(Format('"sl" enthält %d Einträge',[sl.Count])); |
Allerding beginnt bei einer Stringliste der Index bei Null, darum muss die Schleife nun so aussehen:
Delphi-Quelltext
1: 2:
| for i := 0 to sl.Count - 1 do Memo1.Lines.Add(sl[i]); |
5. Und zum Schluss aufräumen:
Delphi-Quelltext
1: 2: 3:
| finally sl.Free; end; |
6. Fertig.
|TF|Alucard - Di 13.04.04 23:20
Ja danke, für die Bemühungen hier möchte ich insbesondere MathiasSimmack hervorheben, auch wenn ich die Lösung von bms eher verstehe. :wink:
mfG |TF|Alucard
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!