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