Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 형식이 변경된 전화번호를 찾는 프로그램

<시간/>

전화 번호가 문자열로 있다고 가정합니다. 전화번호는 숫자, 공백 및/또는 대시 '-'로 구성됩니다. 특정 방식으로 전화 번호를 다시 포맷하고 싶습니다. 몇 가지 규칙이 있습니다 -

  • 시작 부분의 모든 공백과 대시 제거

  • 4자리 이하가 남을 때까지 왼쪽에서 오른쪽으로 숫자를 길이가 3인 블록으로 그룹화합니다.

  • 마지막 숫자는 다음과 같이 그룹화됩니다. -

    • 2자리의 경우:길이가 2인 단일 블록.

    • 3자리의 경우:길이가 3인 단일 블록.

    • 4자리:길이가 각각 2인 블록 2개 추가

이 블록은 대시로 묶입니다. 다시 포맷된 ​​전화번호를 찾아야 합니다.

따라서 입력이 s ="9-6-84102-4 7-8"과 같으면 출력은 "968-410-24-78"이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 숫자 :=빈 문자열

  • blk :=빈 문자열

  • s의 각 문자 i에 대해 수행

    • i가 숫자이면

      • blk :=blk 연결 i

    • blk의 크기가 3과 같으면

      • 숫자 :=숫자 연결 blk 연결 대시("-")

      • blk :=빈 문자열

  • blk의 크기가 0과 같으면

    • 인덱스 0부터 자릿수-1까지의 자릿수 하위 문자열 반환]

  • 그렇지 않으면 blk의 크기가 1과 같을 때

    • 인덱스 0에서 숫자 크기-2까지의 숫자 부분 문자열 반환] 대시 연결("-") 숫자의 두 번째 마지막 문자 연결 blk

  • 그렇지 않으면 blk의 크기가 2와 같을 때

    • 숫자 연결 blk

      반환

예제(파이썬)

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(s):
   digits = ""
   blk = ""
   for i in s:
      if i.isnumeric():
         blk += i
      if len(blk) == 3:
         digits += blk+"-"
         blk = ""

   if len(blk) == 0:
      return digits[:-1]
   elif len(blk) == 1:
      return digits[:-2]+"-"+digits[-2]+blk
   elif len(blk) == 2:
      return digits+blk

s = "9-6-84102-4 7-8"
print(solve(s))

입력

"9-6-84102-4 7-8"

출력

968-410-24-78