Autor Beitrag
Moellers
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 20.11.03 14:09 
Hi zusammen,

ich habe ein Problem mit einem String der aus der Datenbank kommt. In diesem sind die Telefonnummern eingetragen.
Diese haben leider kein einheitliches Format sondern teilweise mit Leerzeichen, Klammern, Bindestrich usw....

Jetzt suche ich eine Möglichkeit den String so zu verändern das er nachher nur noch Zahlen drin hat.

Bsp:
aus

(0203) 4354 - 4334

soll nach der Bearbeitung

020343544334

werden.

Kann mir vielleicht jemand einen Tipp geben wie man sowas regeln kann?

Gruss
Andreas
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Do 20.11.03 14:59 
Hi,

es gibt da eine uralte Pascal- Procedure, die auch noch in Delphi existiert.
procedure Val(S; var V; var Code: Integer);

Die Variable Code gibt bei der Umwandlung, von str nach int die Fehler- position an, wo keine Konvertierung durchgeführt werden konnte. Dann einfach an dieser Stelle das Zeichen entfernen. Das ganze in eine Schleife gepackt. Fertig. Val ist auch in der Delphi- Hilfe erklärt.

Gruß Micha.

_________________
Viele Wege führen nach Rom.
Moellers Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 20.11.03 16:37 
Danke Dir für den Tipp.

Habs hinbekommen
TRomano
Hält's aus hier
Beiträge: 9

Win95 Win98 Win2000 WinXP Win2003
D6 Prof., D7 Enterprises, D8 Architect
BeitragVerfasst: Fr 21.11.03 12:38 
Ein wenig universeller geht es mit folgender function:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
...
const setDigits : set of char = ['0'..'9'];
        setChars  : set of char = ['a'..'z','A'..'Z'];
...
implementation

{$R *.dfm}

function OnlyChars(const s: string; const setOnlyChars : TSetOfChars = []) : string;
var i, nLength : integer;
begin
  Result  := '';
  nLength := Length(s);
  if (setChars = []) or (nLength = 0)
     then begin
            Result := s;
            Exit;
          end
     else for i:=1 to nLength do if (s[i] in setOnlyChars) then Result := Result + s[i];
end;


Allerdings besteht hier noch ein wenig Optimierungspotential ...

Gruss

Tom