AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Werte aus String extrahieren

Ein Thema von orpz · begonnen am 11. Jun 2008 · letzter Beitrag vom 19. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
orpz

Registriert seit: 8. Nov 2007
8 Beiträge
 
#1

Mehrere Werte aus String extrahieren

  Alt 11. Jun 2008, 13:40
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?
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Mehrere Werte aus String extrahieren

  Alt 11. Jun 2008, 13:44
Wenn es immer Leerzeichen---Leerzeichen ist dürfte das doch kein Problem sein.
Blackheart
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: Mehrere Werte aus String extrahieren

  Alt 11. Jun 2008, 13:45
Hallo und herzlich Willkommen in der DP

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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Mehrere Werte aus String extrahieren

  Alt 11. Jun 2008, 13:46
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
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Mehrere Werte aus String extrahieren

  Alt 11. Jun 2008, 13:47
Oder mit Hilfe einer StringListe( .Delimiter, .DelimitedText)
Markus Kinzler
  Mit Zitat antworten Zitat
orpz

Registriert seit: 8. Nov 2007
8 Beiträge
 
#6

Re: Mehrere Werte aus String extrahieren

  Alt 11. Jun 2008, 21:33
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
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Mehrere Werte aus String extrahieren

  Alt 12. Jun 2008, 01:46
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.
  Mit Zitat antworten Zitat
orpz

Registriert seit: 8. Nov 2007
8 Beiträge
 
#8

Re: Mehrere Werte aus String extrahieren

  Alt 12. Jun 2008, 12:09
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?
  Mit Zitat antworten Zitat
Butch87

Registriert seit: 3. Mai 2007
70 Beiträge
 
#9

Re: Mehrere Werte aus String extrahieren

  Alt 12. Jun 2008, 13:03
klar gibs da ne möglichkeit

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;
  Mit Zitat antworten Zitat
orpz

Registriert seit: 8. Nov 2007
8 Beiträge
 
#10

Re: Mehrere Werte aus String extrahieren

  Alt 12. Jun 2008, 19:08
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!?!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz