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
广告