[gelöst] Buchstaben aus String löschen

15. Oktober 2008 14:41

Hallo!

folgende Situation:

Ich habe einen String der da zB lautet: "Hauptstraße 123"

Ich möchte aber das er wie folgt aussieht: "123"

Das umgekehrte, also das nur noch "Hauptstraße" dort steht hab ich hinbekommen

Code:
   FOR x:=1 TO STRLEN(rContCust.Address) DO
      IF rContCust.Address[x] = ' ' THEN
         Strasse:=DELSTR(rContCust.Address,x);


(in rContCust.Address steht "Hauptstraße 123")

Ich müsste doch rein theoretisch die erste Zahl suchen und alles was DAVOR kommt löschen. Seh ich das richtig? Das kann doch nicht so schwer sein ;)
Zuletzt geändert von msp am 15. Oktober 2008 14:54, insgesamt 1-mal geändert.

Re: Buchstaben aus String löschen

15. Oktober 2008 14:51

Versuchs einaml mit COPYSTR

mfg Michael
Code:
Strasse:= COPYSTR(rContCust.Address,1,STRPOS(rContCust.Address,' ')-1);
Nummer := COPYSTR(rContCust.Address,STRPOS(rContCust.Address,' ')+1);

Re: Buchstaben aus String löschen

15. Oktober 2008 14:54

wollte gerade editieren. Bin schon selber drauf gekommen.

Code:
   FOR y:=1 TO STRLEN(rContCust.Address) DO
      IF rContCust.Address[y] = ' ' THEN
         Test:=COPYSTR(rContCust.Address,y);


trotzdem thx =)

Re: [gelöst] Buchstaben aus String löschen

15. Oktober 2008 15:02

Zum Problem wird das ganze allerdings werden wenn innerhalb der 'Straße' ein Leerzeichen ist, wie z.B. bei Adalbert Stifter Str.

Falls hier jemand dafür einen Algorithmus hat: her damit :-)

Achja: der Algorithmus soll natürlich Hausnummern ala '25 b' erkennen.

Re: [gelöst] Buchstaben aus String löschen

16. Oktober 2008 08:20

@ Markus Merkl:

hast du das ganze denn mal getestet? Ich habe eben mal "Adalbert Stifter Str." und "Adalbert Stifter Str. 25b" getestet. Geht wunderbar. Hab das ganze mir mal im Debugger angeschaut. Er sucht wohl das LETZTE leerzeichen. So interpretiere ich das zumindest. Das einzige Problem, was ich sehe: Ich bekomme " 25b" ausgegeben. Also mit nem leerzeichen vor der 25. Ansonsten geht das ganz gut.

EDIT

Code:
   FOR y:=1 TO STRLEN(rContCust.Address) DO
      IF rContCust.Address[y] = ' ' THEN
         Nummer:=COPYSTR(rContCust.Address,y+1);


leerzeichen Problem gelöst.

Aso, das einzige manko "25 b" geht nicht. Aber dafür "25b".

Ist aber alles sehr schwammig. Bin für andere lösungen auch sehr gerne offen ....