Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Telefon Optimize
#1
Selamlar,
Girilen telefon numarasına en başarılı nasıl optimize edebilirim.

Telefon numarası nasıl girilirse girilsin, 5554443322 şeklinde çıktı alacak bir fonksiyon yazmam gerekiyor

Örnek veri girişleri şu şekilde olabilir
00905554443322,
+905554443322,
905554443322,
0554443322,
WWW
Cevapla
#2
Sadece Türkiye mi? Eğer öyle ise son 10 haneyi alabilirsin.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#3
(30-12-2016, Saat: 16:44)yhackup Adlı Kullanıcıdan Alıntı: Selamlar,
Girilen telefon numarasına en başarılı nasıl optimize edebilirim.

Telefon numarası nasıl girilirse girilsin, 5554443322 şeklinde çıktı alacak bir fonksiyon yazmam gerekiyor

Örnek veri girişleri şu şekilde olabilir
00905554443322,
+905554443322,
905554443322,
0554443322,


uses System.StrUtils;

var
 FTmp : String;
begin
 FTmp := '00905554443322';
 FTmp := RightStr(FTmp, 10); // Sağdan sola 10 karakter al.
end;

Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#4
(30-12-2016, Saat: 17:01)barutali Adlı Kullanıcıdan Alıntı:
(30-12-2016, Saat: 16:44)yhackup Adlı Kullanıcıdan Alıntı: Selamlar,
Girilen telefon numarasına en başarılı nasıl optimize edebilirim.

Telefon numarası nasıl girilirse girilsin, 5554443322 şeklinde çıktı alacak bir fonksiyon yazmam gerekiyor

Örnek veri girişleri şu şekilde olabilir
00905554443322,
+905554443322,
905554443322,
0554443322,


uses System.StrUtils;

var
 FTmp : String;
begin
 FTmp := '00905554443322';
 FTmp := RightStr(FTmp, 10); // Sağdan sola 10 karakter al.
end;



Bende böyle bir fonksiyon yapmıştım Smile  Kulağımı tersten tutmuşum.  - RightStr(FTmp, 10); // Sağdan sola 10 karakter al.- bu fonksiyonu bilmiyordum

function TForm2.PhoneOpt(Phone: string): string;
var
i,s:integer;
begin
 Phone := Trim(StringReplace(Phone, '+', '', [rfReplaceAll]));
 if (Length(Phone) < 11) then Result := Phone;
 s := Length(Phone)-1;
 if (Length(Phone) > 10 ) then
 begin
    for I := 0 to 9 do
    begin
       Result := Phone.Chars[s]+ Result;
       Dec(s);
    end;
 end;
end;
WWW
Cevapla
#5
Ya 444 0 375 türk telekom ararsa ne yapacaksınız Smile

Şahsi fikrimdir ki gelen numarayı uzunluğunu bulman ve case ile senaryoya göre çıktı vermen
Cevapla
#6
(30-12-2016, Saat: 17:31)esrehmaan Adlı Kullanıcıdan Alıntı: Ya 444 0 375 türk telekom ararsa ne yapacaksınız Smile

Şahsi fikrimdir ki gelen numarayı uzunluğunu bulman ve case ile senaryoya göre çıktı vermen

trim ve replace o işleri hallediyor yazdım onları Wink
çünkü +90545xxx şeklinde giren de oluyor
WWW
Cevapla
#7
(30-12-2016, Saat: 17:41)yhackup Adlı Kullanıcıdan Alıntı:
(30-12-2016, Saat: 17:31)esrehmaan Adlı Kullanıcıdan Alıntı: Ya 444 0 375  türk telekom ararsa ne yapacaksınız Smile

Şahsi fikrimdir ki gelen numarayı uzunluğunu bulman ve case ile senaryoya göre çıktı vermen

trim ve replace o işleri hallediyor yazdım onları Wink
çünkü +90545xxx şeklinde giren de oluyor


 function NumaraDuzelt(GelenNo : string) : String;
begin
Case length(Gelenno) of
      1..10 : result:=Gelenno ;
      11..200: result:=RightStr(GelenNo,10);
End

bu daha basit zaar Smile
Cevapla
#8
(30-12-2016, Saat: 17:52)esrehmaan Adlı Kullanıcıdan Alıntı:
(30-12-2016, Saat: 17:41)yhackup Adlı Kullanıcıdan Alıntı: trim ve replace o işleri hallediyor yazdım onları Wink
çünkü +90545xxx şeklinde giren de oluyor


 function NumaraDuzelt(GelenNo : string) : String;
begin
Case length(Gelenno) of
      1..10 : result:=Gelenno ;
      11..200: result:=RightStr(GelenNo,10);
End

bu daha basit zaar Smile

Öyle Görünüyor ellaaam peki gelen numara içerisinden rakam dışında olanları tek seferde nasıl silerim örneğin kullanıcı 4442525? gibi girdi veya 444.25.25 gibi numara dışındaki herşeyi temizyeyeyim
WWW
Cevapla
#9
İyi akşamlar. Numara türkiye için kullanacaksan bir combobox koy, içerisine operatör numaralarını yaz. Karşısınada umberedit koy maxlength belirle.
WWW
Cevapla
#10

uses System.SysUtils, System.Character;

function Filter(const Input: string; const Keep: TFunc<Char, Boolean>): string;
var
 C: Char;
 N: Integer;
begin
 SetLength(Result, Length(Input));
 N := 0;
 for C in Input do
   if Keep ( C ) then  
   begin
     inc(N);
     Result[N] := C;
   end;
 SetLength(Result, N);
end;

function IsNotLetter(C: Char): Boolean;
begin
 Result := not C.IsLetter;
end;

function NumaraDuzelt(GelenNo : string) : String;
begin
Case length(Gelenno) of
      1..10 : result:=Filter(Gelenno, IsNotLetter) ;
      11..200: result:=RightStr(Filter(GelenNo, IsNotLetter),10);
End
End;






Buda öyle Ellamm   Smile
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi