Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bestimmte Zahlen aus einem String auslesen (https://www.delphipraxis.net/124107-bestimmte-zahlen-aus-einem-string-auslesen.html)

Feyh 14. Nov 2008 13:48


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?

mkinzler 14. Nov 2008 13:50

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

3_of_8 14. Nov 2008 13:52

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 Delphi-Referenz durchsuchencopy raus.

Feyh 14. Nov 2008 14:03

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^^)

Forlan 14. Nov 2008 14:06

Re: Bestimmte Zahlen aus einem String auslesen
 
Zitat:

Zitat von Feyh
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^^)

machs doch einfach so...

Delphi-Quellcode:
Ausgabe := DeinString[1]+DeinString[2];
Also wenn du nur zweistellige Hausnummern hast sollte das ausreichen...

Feyh 14. Nov 2008 14:11

Re: Bestimmte Zahlen aus einem String auslesen
 
Zitat:

Zitat von Forlan
Zitat:

Zitat von Feyh
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^^)

machs doch einfach so...

Delphi-Quellcode:
Ausgabe := DeinString[1]+DeinString[2];
Also wenn du nur zweistellige Hausnummern hast sollte das ausreichen...

Wenn das doch nur so einfach wäre =Þ

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.

DeddyH 14. Nov 2008 14:12

Re: Bestimmte Zahlen aus einem String auslesen
 
Mal auf die Schnelle dahergetippt:
Delphi-Quellcode:
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;
Wer mag, darf gerne korrigieren/optimieren ;)

[edit] Hab selbst schon was gefunden und korrigiert. [/edit]

himitsu 14. Nov 2008 14:18

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)

Klaus01 14. Nov 2008 14:21

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

DeddyH 14. Nov 2008 14:29

Re: Bestimmte Zahlen aus einem String auslesen
 
Sicherlich, das kann man ja noch verfeinern/erweitern.


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

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