티스토리 뷰

반응형

델파이로 프로그래밍 하다보면 전화번호 형식을 표준화 해야 하는데,

항상 찾게 되네요...

 

제 PC에서는 아직까지는 잘 활용되어 지고 있습니다.

이용중에 보완해야 할 부분이 있으시면 댓글 주세요.

[ 함수 본문 ] 대시가 있건 없건  전화번호 문자열를 받아, 무조건 대시(-)를 넣어서 반환.

//
// 전화번호 형식 변환
//
function GetPhoneNumber(aNoDashTelNo: string): string;
var
  tTelNo : String;
  FLocalNo, FSeoul : Boolean;
begin
  tTelNo := StringReplace(aNoDashTelNo, '-', '', [rfReplaceAll, rfIgnoreCase]);

  if (Length(tTelNo) <= 0) then
  begin
     Result := '';
     exit;
  end;

  if (Length(tTelNo) > 11) then
  begin
     result := copy(aNoDashTelNo,1,12);
     exit;
  end;

  FLocalNo := False;
  FSeoul   := False;

  if tTelNo[1] = '0' then
     FLocalNo := True;

  if ( FLocalNo ) and ( tTelNo[2] = '2' ) then
    FSeoul := True;

  if ( FLocalNo ) then
  begin
     if ( FSeoul ) then
     begin
        case Length(tTelNo) of
           3 : tTelNo := Copy(tTelNo,1,2) + '-' + Copy(tTelNo,3,1);
           6 : tTelNo := Copy(tTelNo,1,2) + '-' + Copy(tTelNo,3,3) + '-' + Copy(tTelNo,6,1);
           9 : tTelNo := Copy(tTelNo,1,2) + '-' + Copy(tTelNo,3,3) + '-' + Copy(tTelNo,6,4);
          10 : tTelNo := Copy(tTelNo,1,2) + '-' + Copy(tTelNo,3,4) + '-' + Copy(tTelNo,7,4)
          else tTelNo := aNoDashTelNo;
        end
     end
     else
     begin
        case Length(tTelNo) of
           4 : tTelNo := Copy(tTelNo,1,3) + '-' + Copy(tTelNo,4,1);
           7 : tTelNo := Copy(tTelNo,1,3) + '-' + Copy(tTelNo,4,3) + '-' + Copy(tTelNo,7,3);
          10 : tTelNo := Copy(tTelNo,1,3) + '-' + Copy(tTelNo,4,3) + '-' + Copy(tTelNo,7,4);
          11 : tTelNo := Copy(tTelNo,1,3) + '-' + Copy(tTelNo,4,4) + '-' + Copy(tTelNo,8,4);
          else tTelNo := aNoDashTelNo;
        end
     end
  end
  else
  begin
     case Length(tTelNo) of
        4  : tTelNo := Copy(tTelNo,1,3) + '-' + Copy(tTelNo,4,1);
        8  : tTelNo := Copy(tTelNo,1,4) + '-' + Copy(tTelNo,5,4);
        else tTelNo := aNoDashTelNo;
     end;
  end;

  Result := tTelNo;

end;

 

 

반응형
댓글