在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:一个空字符串
- 如果i是数字,则
-
如果blk的大小与0相同,则
- 返回从索引0到digits-1大小的子字符串
- 否则,当blk的大小与1相同时,则
- 返回从索引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