![]() |
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? |
Re: Mehrere Werte aus String extrahieren
Wenn es immer Leerzeichen---Leerzeichen ist dürfte das doch kein Problem sein.
|
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 ![]() |
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 |
Re: Mehrere Werte aus String extrahieren
Oder mit Hilfe einer StringListe( .Delimiter, .DelimitedText)
|
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 |
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. |
Re: Mehrere Werte aus String extrahieren
Vielen Dank- Das hat schon einmal wunderbar geklappt! Ich habe es mit dem Beispiel von
![]() 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? |
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; |
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. |
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