Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาหมายเลขโทรศัพท์ที่ฟอร์แมตใหม่ในภาษา Python


สมมติว่าเรามีหมายเลขโทรศัพท์เป็นสตริง หมายเลขโทรศัพท์ประกอบด้วยตัวเลข ช่องว่าง และ/หรือขีดคั่น '-' เราต้องการฟอร์แมตหมายเลขโทรศัพท์ใหม่ในลักษณะบางอย่าง มีกฎเล็กน้อย -

  • ลบช่องว่างและขีดกลางทั้งหมดในตอนเริ่มต้น

  • จัดกลุ่มตัวเลขจากด้านซ้ายไปด้านขวาเป็นบล็อคที่มีความยาว 3 จนเหลือ 4 หลักหรือน้อยกว่า

  • ตัวเลขสุดท้ายจะถูกจัดกลุ่มเช่น −

    • สำหรับ 2 หลัก:บล็อกเดียวยาว 2

    • สำหรับตัวเลข 3 หลัก:บล็อกเดียวยาว 3

    • สำหรับ 4 หลัก:อีก 2 บล็อกยาว 2 ตัว

บล็อกเหล่านี้จะถูกมัดด้วยขีดกลาง เราต้องหาเบอร์โทรศัพท์ที่ฟอร์แมตแล้ว

ดังนั้น หากอินพุตเป็น s ="9-6-84102-4 7-8" เอาต์พุตจะเป็น “968-410-24-78”

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ตัวเลข :=สตริงว่าง

  • blk :=สตริงว่าง

  • สำหรับแต่ละอักขระ i ใน s ทำ

    • ถ้าฉันเป็นตัวเลขแล้ว

      • blk :=blk concatenate i

    • ถ้าขนาดของ blk เท่ากับ 3 แล้ว

      • digits :=digits concatenate blk concatenate dash("-")

      • blk :=สตริงว่าง

  • ถ้าขนาดของ blk เท่ากับ 0 แล้ว

    • คืนค่าสตริงย่อยของตัวเลขจากดัชนี 0 เป็นขนาดของตัวเลข -1]

  • มิฉะนั้นเมื่อขนาดของ blk เท่ากับ 1 แล้ว

    • ส่งคืนสตริงย่อยของตัวเลขจากดัชนี 0 ถึงขนาดของตัวเลข-2] เชื่อม dash("-") เชื่อมอักขระตัวที่สองตัวสุดท้ายของตัวเลขต่อกัน blk

  • มิฉะนั้นเมื่อขนาดของ blk เท่ากับ 2 แล้ว

    • ส่งคืนตัวเลขต่อ 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