Python程序:格式化电话号码


假设我们有一个电话号码字符串。该电话号码由数字、空格和/或短划线“-”组成。我们希望以某种方式重新格式化电话号码。有一些规则:

  • 删除开头所有的空格和短划线

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

  • 最后的数字分组方式如下:

    • 2位数字:一个长度为2的块。

    • 3位数字:一个长度为3的块。

    • 4位数字:两个长度为2的块。

这些块用短划线连接起来。我们需要找到重新格式化的电话号码。

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

为了解决这个问题,我们将遵循以下步骤:

  • digits := 一个空字符串

  • blk := 一个空字符串

  • 对于s中的每个字符i,执行以下操作:

    • 如果i是数字,则

      • blk := blk连接i

    • 如果blk的长度等于3,则

      • digits := digits连接blk连接短划线("-")

      • blk := 一个空字符串

  • 如果blk的长度等于0,则

    • 返回digits从索引0到digits长度-1的子字符串

  • 否则,如果blk的长度等于1,则

    • 返回digits从索引0到digits长度-2的子字符串连接短划线("-")连接digits的倒数第二个字符连接blk

  • 否则,如果blk的长度等于2,则

    • 返回digits连接blk

示例 (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

更新于:2021年5月18日

346 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告