在 Python 中查找重新格式化的电话号码的程序

假设我们有一个号码作为字符串。号码由数字、空格和/或破折号“-”组成。我们想以某种方式重新格式化号码。规则很少 -

  • 删除开头的所有空格和破折号

  • 将从左侧到右侧的数字分组为长度为 3 的块,直到剩下 4 个或更少的数字。

  • 然后将最后的数字分组如下 -

    • 对于 2 位数字:长度为 2 的单个块。

    • 对于 3 位数字:长度为 3 的单个块。

    • 对于 4 位数字:另外两个长度为 2 的块。

然后这些块被破折号击打。我们必须找到重新格式化的号码。

因此,如果输入类似于 s = "9-6-84102-4 7-8",那么输出将是“968-410-24-78”

示例(Python)

让我们看看以下实现以获得更好的理解 -

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