# Program to find reformatted phone number in Python

PythonServer Side ProgrammingProgramming

Suppose we have a phone number as string. The phone number number consists of digits, spaces and/or dashes '-'. We want to reformat the phone number in a certain manner. There are few rules −

• Remove all spaces and dashes at beginning

• Group the digits from left side to right side into blocks of length 3 until there are 4 or less digits are left.

• The final digits are then grouped like −

• For 2 digits: A single block of length 2.

• For 3 digits: A single block of length 3.

• For 4 digits: Two more blocks of length 2 each.

These blocks are then clubbed by dashes. We have to find the reformatted phone number.

So, if the input is like s = "9-6-84102-4 7-8", then the output will be “968-410-24-78”

To solve this, we will follow these steps −

• digits := a blank string

• blk := a blank string

• for each character i in s, do

• if i is numeric, then

• blk := blk concatenate i

• if size of blk is same as 3, then

• digits := digits concatenate blk concatenate dash("-")

• blk := a blank string

• if size of blk is same as 0, then

• return substring of digits from index 0 to size of digits-1]

• otherwise when size of blk is same as 1, then

• return substring of digits from index 0 to size of digits-2] concatenate dash("-") concatenate second last character of digits concatenate blk

• otherwise when size of blk is same as 2, then

• return digits concatenate blk

## Example (Python)

Let us see the following implementation to get better understanding −

Live Demo

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))

## Input

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

## Output

968-410-24-78
Published on 18-May-2021 11:43:18