[Delphi] 전화번호 형식으로 바꾸기



function TelNoAutoMata(vTelNo: string): string; 
var
  tTelNo: string;
  FLocal, FSeoul: Boolean;
begin

  tTelNo := StringReplace(vTelNo, '-', '', [rfReplaceAll, rfIgnoreCase]);

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

  if (Length(tTelNo) > 12) then begin // Edit MaxLength : 13
    result := copy(vTelNo, 1, 13);
    exit;
  end;

  FLocal := False;
  FSeoul := False;

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

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

  if (FLocal) then
    if (FSeoul) then // 서울 (02로 시작)
      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 := vTelNo;
      end
    else // 서울을 제외 한 전화번호
      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, 1);
        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 := vTelNo;
      end
  else // 0으로 시작하지 않는 전화번호
    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 := vTelNo;
    end;

  Result := tTelNo;

end;