| Autor |
Beitrag |
Bob Murphy
      
Beiträge: 91
XP, Ubuntu
Delphi 7 SE, Delphi 2007
|
Verfasst: Mi 18.11.09 19:59
Moin,
ich würde gerne aus einer Textdatei alle Zahlen herausfiltern.
Dazu möchte ich gerne RegExpr benutzen.
Ich dachte das ich dazu einfach eine repeat Schleife solange laufen lasse bis alle Zahlen gefiltert wurden.
Jetzt kommt meine Frage, wenn die erste Zahl zb an Position 15 gefunden wurde, muss RegExpr beim zweiten Durchlauf ab Position 16 weitersuchen. Wie bekomme ich das zustande?
LG Bob
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mi 18.11.09 20:03
Kannst doch auch einfach einen eigenen kleinen Parser machen der dir die Zahlen raussucht und dann nach der gefundenen Stelle mit der Suche weitermacht. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Bob Murphy 
      
Beiträge: 91
XP, Ubuntu
Delphi 7 SE, Delphi 2007
|
Verfasst: Mi 18.11.09 20:06
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mi 18.11.09 20:08
Naja du lädst das ganze in ein String und suchst dort mit dem Pos-Befehl nach Zahlen, müsste doch auch gehen oder? Weis allerdings nicht genau ob das möglich ist, da man ja mit Pos eigentlich nur nach einem Zeichen oder einer Kette von Zeichen suchen kann.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Bob Murphy 
      
Beiträge: 91
XP, Ubuntu
Delphi 7 SE, Delphi 2007
|
Verfasst: Mi 18.11.09 20:11
Dude566 hat folgendes geschrieben : | | Naja du lädst das ganze in ein String und suchst dort mit dem Pos-Befehl nach Zahlen, müsste doch auch gehen oder? Weis allerdings nicht genau ob das möglich ist, da man ja mit Pos eigentlich nur nach einem Zeichen oder einer Kette von Zeichen suchen kann. |
Eben, ich glaub mit Pos wird das nichts, aber lasse mich gerne eines besseren belehren^^.
Ich suche auch nicht nach einer bestimmten Zahl, sondern ich möchte einfach alle aus der Textdatei haben.
Glaub da ist RegExpr schon der richtige Ansatz.
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mi 18.11.09 20:33
Wieso RegExpr.. ?
For Schleife -> if Zeichen in ['0'..'9'] then Output;
vielleicht nicht schnell, aber geht
RegEx sind doch eher für komplexere Zeichenketten gedacht, als nur ein bestimmtes Zeichen?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Bob Murphy 
      
Beiträge: 91
XP, Ubuntu
Delphi 7 SE, Delphi 2007
|
Verfasst: Mi 18.11.09 20:42
Xentar hat folgendes geschrieben : | Wieso RegExpr.. ?
For Schleife -> if Zeichen in ['0'..'9'] then Output;
vielleicht nicht schnell, aber geht
RegEx sind doch eher für komplexere Zeichenketten gedacht, als nur ein bestimmtes Zeichen? |
RegExpr war das erste was mir dafür eingefallen ist.
Aber wie soll das funktionieren wenn eine Zahl zb 001, die andere 4701 und noch eine andere 500 ist?
Ich kann vorher auch nicht sagen wie kurz oder lang eine Zahl ist, es könnte auch zb 5000000000 vorkommen.
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mi 18.11.09 20:52
Pseudocode
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| flag = 0 für alle zeichen in Eingabedatei wenn Zeichen eine Zahl ist flag = 1 zeichen in ausgabedatei übertragen sonst wenn flag = 1 flag = 0 zeilenumbruch in ausgabedatei hinzufügen |
damit bekommst du alle Zahlen untereinander.
Edit:
Äh, sprechen wir hier eigentlich von mehreren Zahlen in einer Datei, oder wie sieht so eine Eingabedatei aus?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Bob Murphy 
      
Beiträge: 91
XP, Ubuntu
Delphi 7 SE, Delphi 2007
|
Verfasst: Mi 18.11.09 21:01
Xentar hat folgendes geschrieben : | | Äh, sprechen wir hier eigentlich von mehreren Zahlen in einer Datei, oder wie sieht so eine Eingabedatei aus? |
Ja es sind mehrere Zahlen vorhanden. ZB könnte eine Datei so aussehen: gghg64465g7ghg65gh456ghg5 usw.....
Also willst du einfach jedes einzelne Zeichen überprüfen ob Zahl oder Buchstabe, wenn Zahl, dann Zeichen in String einfügen, wenn das nächste Zeichen wieder eine Zahl ist, wird diese auch an den String angehangen. Solange bis das nächste Zeichen ein Buchstabe ist.
Moderiert von Narses: Zitat gekürzt.
|
|