Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mehrere Werte aus String extrahieren (https://www.delphipraxis.net/115387-mehrere-werte-aus-string-extrahieren.html)

orpz 11. Jun 2008 12:40


Mehrere Werte aus String extrahieren
 
Einen wunderschönen,

ich versuche aus einem String z.B. 22 --- 3.16 --- 21 --- 10 die einzelnen Zahlenwerte zu extrahieren. Das Problem ist, dass der nächste Bspl String so aussehen könnte: 465 --- 3 --- 21 --- 4
Das heißt, ich kann die genauen Positionen zum wegschneiden der Trennstriche nicht festlegen, da der Abstand zum nächsten Wert variabel ist. Ein einfaches ersetzen mit StringReplace scheidet ebenfalls aus.

Könnt ihr mir helfen?

Blackheart 11. Jun 2008 12:44

Re: Mehrere Werte aus String extrahieren
 
Wenn es immer Leerzeichen---Leerzeichen ist dürfte das doch kein Problem sein.

RWarnecke 11. Jun 2008 12:45

Re: Mehrere Werte aus String extrahieren
 
Hallo und herzlich Willkommen in der DP :cheer:

Du kannst mit den Befehlen Pos und PosEx arbeiten. Du kannst aber auch mit StringReplace arbeiten. Du suchst nach ' --- ' und ersetzt dieses durch ';'. Danach suchst Du Dir noch die Funktion Hier im Forum suchenExplode hier aus dem Forum und trennst damit die einzelnen Werte.

Tyrael Y. 11. Jun 2008 12:46

Re: Mehrere Werte aus String extrahieren
 
Kann man davon ausgehen, daß zwischen den Zaheln immer ' --- ' steht?

Wenn ja, hast du doch schon deinen Ansatz.

- mit Pos nach dem nächsten ' --- ' suchen
- von Anfang bis zu dieser Position den String kopieren
- mit StrToIntDef umwandeln in Zahl
- von Anfang bis Position + Länge von ' --- ' abschneiden

- das ganze wieder von vorn anfangen

fettisch

mkinzler 11. Jun 2008 12:47

Re: Mehrere Werte aus String extrahieren
 
Oder mit Hilfe einer StringListe( .Delimiter, .DelimitedText)

orpz 11. Jun 2008 20:33

Re: Mehrere Werte aus String extrahieren
 
Ich danke für die schnellen Reaktionen!

Sowohl DelimitedText, als auch PosEx sind interessante Lösungsansätze, welche mir gefehlt haben. Ich habe es kurz überflogen und ausprobiert. Mein Problem ist diese Strings erst einmal zu isolieren und anschließend in eine Liste/Tabelle zu übertragen. Ich gebe zu ich habe noch nicht viel Zeit investiert, habe momentan Nachtschicht^^

Setze mich Morgen noch einmal dran. THX

sx2008 12. Jun 2008 00:46

Re: Mehrere Werte aus String extrahieren
 
Einfach die drei Minuszeichen mit StringReplace durch ein Pipezeichen | ersetzen.
Das ist der Haupttrick, denn das vereinfacht die weitere Verarbeitung und ermöglicht den Einsatz von Standardverfahren
Dann mit oben erwähnter Explode() Funktion oder mit Hilfe TStrings.DelimitedText die Daten in Einzelstrings zerlegen.
Die Leerzeichen werden dann jeweils mit Trim() entfernt. Oder man ersetzt gleich den String ' ---- ' durch das Pipezeichen; dann sind die Leerzeichen schon eliminiert.

orpz 12. Jun 2008 11:09

Re: Mehrere Werte aus String extrahieren
 
Vielen Dank- Das hat schon einmal wunderbar geklappt! Ich habe es mit dem Beispiel von String zerlegen anhand des Postes von sx2008 realisiert und habe jetzt die entsprechenden Werte in einer Listbox untereinander stehen. (Ursprünglicher String = 22 --- 3.16 --- 21 --- 10)

22
3.16
21
10

Dazu kommen aber noch einmal eine unbestimmte Anzahl Einträge nach dem selben Muster. (Max 122600)
Das heißt ich habe eine ziemlich lange Liste mit Werten. Diese möchte ich nun automatisch in ein Stringgrid (4x122600) einsortieren lassen.
Und dafür fehlt mir die Funktion einer Schleife, die jede Zeile entsprechend einfügt. Gibt es da irgendeine Möglichkeit?

Butch87 12. Jun 2008 12:03

Re: Mehrere Werte aus String extrahieren
 
klar gibs da ne möglichkeit :zwinker:

Nimm am besten nen Listview!! Da kannste dann deine 4 Spalten eingeben (bei columns)!! Damit diese angezeigt werde musst du noch den "viewstyle" auf "vsReport" setzen!!

dann nimmst du ungefähr sone schleife...

Delphi-Quellcode:
for i:= 0 to MAX do
with Listview.Items.Add do
begin
  caption:= 1.Wert;
  Subitems.Add(2.Wert);
  Subitems.Add(3.Wert);
  Subitems.Add(4.Wert);
end;

orpz 12. Jun 2008 18:08

Re: Mehrere Werte aus String extrahieren
 
Praktisch- Das scheint der Durchbruch zu sein! Aber wie bekomme ich es hin, dass die Formatierung des ursprünglichen String ( 22 --- 3.16 --- 21 --- 10) erhalten bleibt?
Denn ich habe ja nicht nur die 4 Werte untereinander stehen, sondern 490.400 Werte, bei denen es gilt sie weg zusortieren. Also irgendwas in die Richtung: Per Schleife jede 4 Zeile in das dafür angelegte Item in Listview eintragen zu lassen!?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Seite 1 von 2  1 2      

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