![]() |
Bestimmte Zahlen aus einem String auslesen
Hallo an Alle,
Ich schmücke meinen ersten Post in diesem Forum direkt mal mit einer kleinen Frage aus. Ich möchte eine Zahl aus einem String auslesen (das ist mir soweit auch gelungen). Nun besteht aber das kleine Problem, dass nur die erste Zahl ausgelesen werden soll und alle anderen Zahlen ignoriert werden sollen. Ein Beispiel wäre folgendes: 15, Hauptstraße / NRW14 Die 15 stellt die Hausnummer da, "Hauptstraße" eben den Straßennamen und "NRW14" zum Beispiel einen kleinen Bezirk. Ich möchte mir lediglich die 15 als Hausnummer ausgeben lassen. Ich habe das momentan mit "CharIsDigit" gelöst, nur da besteht eben das Problem, dass er mir alle Zahlen ausgibt und hintereinander stellt ( die Ausgabe von oben genannten Beispiel ist demnach: "Hausnummer: 1514") Eine Logik habe ich bereits ( er soll mir nur die erste Zahl, die ausgelesen wird, als Hausnummer ausgeben und die andren ignorieren), jetzt hänge ich aber an der Realisierung dieser Logik. :wall: Wie (bzw. mit welchem Befehl) führe ich das am bestmöglichsten aus? |
Re: Bestimmte Zahlen aus einem String auslesen
Position der 1.Ziffer suchen und anschliessend die erste Nichtziffer suchen.
Oder mit Hilfe eines regulären Ausdrucks |
Re: Bestimmte Zahlen aus einem String auslesen
Nimm dir ne Schleife, geh den String durch, bis du bei der ersten Ziffer bist, merk dir die Position, geh weiter, bis du an einer Nicht-Ziffer (oder dem Ende des Strings) angekommen bist und schneid alles dazwischen mit
![]() |
Re: Bestimmte Zahlen aus einem String auslesen
Ok, diese Vorgehensweise ist klar. Bei mir hackt es momentan aber noch ein wenig an der Erfahrung mit welchen Befehlen ich das mache.
Wie gehe ich denn jetzt den String durch un merke mir die Stellen mit Zahlen? Ein kleines Codebeispiel wäre vllt nicht verkehrt. (Tut mir leid, ich bin momentan ein wenig schwer von Begriff^^) |
Re: Bestimmte Zahlen aus einem String auslesen
Zitat:
Delphi-Quellcode:
Also wenn du nur zweistellige Hausnummern hast sollte das ausreichen...
Ausgabe := DeinString[1]+DeinString[2];
|
Re: Bestimmte Zahlen aus einem String auslesen
Zitat:
Das Problem ist aber dabei, dass ich nicht nur eine Adresse habe, sondern weitaus mehr. Und zusätzlich sind da hausnummern dabei, die 3stellig sind, mit "-" verbunden sind oder erst hinter der Adresse stehen. Es gibt dazwischen halt Ausnahmen, welche ich rausfiltern möchte. |
Re: Bestimmte Zahlen aus einem String auslesen
Mal auf die Schnelle dahergetippt:
Delphi-Quellcode:
Wer mag, darf gerne korrigieren/optimieren ;)
function FirstNumber(const sText: string): string;
var i,j: integer; begin SetLength(Result, Length(sText)); j := 0; i := 1; while (i <= Length(sText)) and not(sText[i] in ['0'..'9']) do inc(i); while (i <= Length(sText)) and (sText[i] in ['0'..'9']) do begin inc(j); Result[j] := sText[i]; inc(i); end; SetLength(Result,j); end; [edit] Hab selbst schon was gefunden und korrigiert. [/edit] |
Re: Bestimmte Zahlen aus einem String auslesen
na erstmal suchst du dir die 1. Zahl und von da ausgehend suchst du nahch dem nächsten Nicht-Zahl-Zeichen und in diesem Bereich befindet sich die Zahl.
Delphi-Quellcode:
z.B. jeweil über 'ne Schleife suchen
if (s[i] >= '0') and (s[i] <= '9') then Zahl_gefunden... // oder if s[i] in ['0'..'9'] then Zahl_gefunden... if (s[i2] < '0') or (s[i2] < '9') then keine_Zahl_mehr... // oder if (s[i2] in ['0'..'9']) then keine_Zahl_mehr... // und dann Zahl := Copy(s, i, i2 - i); Ist die Zahl eigentlich immer das Erste, oder kann davor noch etwas außerLeerzeichen vorkommen. Was ist bei Hausnummern mit Zusatz? (z.B. 10a) |
Re: Bestimmte Zahlen aus einem String auslesen
Hallo,
eine kleine Anmerkung, was wenn jemand in Hausnummer 15a wohnt. Währe es da nicht ratsam auch den ersten Buchstaben mitzunehmen wenn er direkt einer Zahl folgt? Grüße Klaus |
Re: Bestimmte Zahlen aus einem String auslesen
Sicherlich, das kann man ja noch verfeinern/erweitern.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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