Thema: Delphi Handynummer erkennen

Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Handynummer erkennen

  Alt 1. Jun 2010, 18:41
Regular Expressions wäre natürlich auch eine Möglichkeit...

Naja hier mal die Version, die auch die Schweizer und Österreicher Handyvorwahlen erkennt.
Der Rest wäre dann Fleissarbeit.
Delphi-Quellcode:
function IsMobilePhoneNumber(x:string):Boolean;
const
   vorwahl_DE: array[0..19] of string =
   (
      // T-Mobile
      '151', '160', '170', '171', '175',
      // vodafone
      '152', '162', '172', '173', '174',
      // E-Plus
      '157', '163', '177', '178',
      // O2
      '159', '176', '179',
      // Rest (simyo, Group 3G,..)
      '150', '161', '164'
         );
   vorwahl_CH: array[0..3] of string =
   ( '76', '77', '78', '79' );

   vorwahl_AT: array[0..18] of string =
   ( '650','651','652','653','655','657','659','660','661','663',
   '664','665','666','667','668','669', '67','68','69' );

   vorwahl_GB: array[0..2] of string =
   ( '7824', '7590', '7734' );
var
   p1 : Integer;
begin
   x := StrRemoveChars(x, [#10,#13,#9,' ','P','-', ',']); // Störzeichen entfernen
   if x = 'then
   begin
      Result := False;
      Exit;
   end;

   // Nummer mit diesem Aufbau behandeln
   // +49(0)170xxxxxxx
   if x[1] = '+then
   begin
      // die (0) rausschneiden
      p1 := Pos('(0)', x);
      if (p1 > 1) then
         Delete(x, p1, 3);
   end;

   // Falls die Nummer diesen Aufbau hat
   // (0170)xxxxxxx
   // dann die Klammern entfernen
   if x[1] = '(then
      x := StrRemoveChars(x, ['(',')']);


   case StrPrefixIndex(x, ['+49', '+41', '+43','+44']) of
      0: // Deutscheland
         Result := StrHasPrefix(Copy(x, 4,10), vorwahl_DE);
      1: // Schweiz
         Result := StrHasPrefix(Copy(x, 4,10), vorwahl_CH);
      2: // Österreich
         Result := StrHasPrefix(Copy(x, 4,10), vorwahl_AT);
      3: // vereinigtes Königreich
         Result := StrHasPrefix(Copy(x, 4,10), vorwahl_GB);
   else
      if x[1] ='0then
         Result := StrHasPrefix(Copy(x, 2, 10), vorwahl_DE)
      else
         Result := False;
   end;
end;
Andreas
  Mit Zitat antworten Zitat