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 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告