ฟังก์ชัน startswith() ของ Python ตรวจสอบว่าสตริงเริ่มต้นด้วยซับสตริงที่ระบุหรือไม่ ฟังก์ชัน endswith() ของ Python ตรวจสอบว่าสตริงจบด้วยซับสตริงหรือไม่ ทั้งสองฟังก์ชันคืนค่า True หรือ False
บ่อยครั้งที่เมื่อคุณทำงานกับสตริงขณะเขียนโปรแกรม คุณอาจต้องการตรวจสอบว่าสตริงเริ่มต้นหรือจบลงด้วยค่าเฉพาะหรือไม่
ตัวอย่างเช่น หากคุณสร้างโปรแกรมที่เก็บเบอร์โทรศัพท์ของผู้ใช้ คุณอาจต้องการตรวจสอบว่าผู้ใช้ระบุรหัสประเทศไว้หรือไม่ หรืออาจคุณสร้างโปรแกรมที่ตรวจสอบว่าชื่อผู้ใช้จบด้วย e สำหรับโปรโมชั่นพิเศษของอาร์เคดของคุณ
นั่นคือที่มาของฟังก์ชันในตัว startswith() และ endswith() startswith() และ endswith() สามารถใช้เพื่อกำหนดว่าสตริงเริ่มต้นหรือจบด้วยซับสตริงเฉพาะ ตามลำดับ
บทช่วยสอนนี้จะอภิบายวิธีใช้เมธอด startswith() และ endswith() ของ Python เพื่อตรวจสอบว่าสตริงเริ่มต้นหรือจบด้วยซับสตริงเฉพาะ เราจะทำงานผ่านตัวอย่างของแต่ละเมธอดที่ใช้ในโปรแกรม
บทนำสรุป String Index
ก่อนพูดถึง startsWith และ endsWith เราควรใช้เวลาทบทวนความรู้เกี่ยวกับ string index ใน Python
สตริงคือลำดับของตัวอักษร เช่น ตัวเลข ช่องว่าง ตัวอักษร และสัญลักษณ์ คุณสามารถเข้าถึงส่วนต่างๆ ของสตริงได้ในลักษณะเดียวกับที่คุณทำกับลิสต์
ทุกตัวอักษรในสตริงมีค่าดัชนี (index value) ดัชนีคือตำแหน่งที่ตัวอักษรอยู่ในสตริง หมายเลขดัชนีเริ่มต้นที่ 0 ตัวอย่างเช่น นี่คือสตริง Python Substrings พร้อมหมายเลขดัชนี:
| P | y | t | h | o | n | S | u | b | s | t | r | i | n | g | s | |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
ตัวอักษรแรกในสตริงคือ P มีค่าดัชนี 0 ตัวอักษรสุดท้ายของเรา s มีค่าดัชนี 16 เนื่องจากแต่ละตัวอักษรมีหมายเลขดัชนีของตัวเอง เราจึงสามารถจัดการสตริงตามตำแหน่งของแต่ละตัวอักษรได้
Python Startswith
เมธอดสตริง startswith() ตรวจสอบว่าสตริงเริ่มต้นด้วยซับสตริงเฉพาะหรือไม่ หากสตริงเริ่มต้นด้วยซับสตริงที่ระบุ เมธอด startswith() จะคืนค่า True มิฉะนั้น ฟังก์ชันจะคืนค่า False
นี่คือไวยากรณ์สำหรับเมธอด startswith() ของ Python:
string_name.startswith(substring, start_pos, end_pos)
เมธอด startswith() รับพารามิเตอร์ 3 ตัว ดังนี้:
- substring คือสตริงที่จะตรวจสอบภายในสตริงที่ใหญ่กว่า (จำเป็น)
- start_pos คือตำแหน่งดัชนีเริ่มต้นที่การค้นหาซับสตริงควรเริ่มต้น (ตัวเลือก)
- end_pos คือตำแหน่งดัชนีที่การค้นหาซับสตริงควรสิ้นสุด (ตัวเลือก)
พารามิเตอร์ substring เป็น case sensitive (แยกตัวพิมพ์เล็ก-ใหญ่) ดังนั้น หากคุณค้นหา s ในสตริง มันจะค้นหาเฉพาะตัว s ตัวพิมพ์เล็ก หากคุณต้องการค้นหา S ตัวพิมพ์ใหญ่ คุณจะต้องระบุตัวอักษรนั้น นอกจากนี้ จำได้ว่า ตำแหน่งดัชนีใน Python เริ่มที่ 0 ซึ่งจะส่งผลต่อพารามิเตอร์ start_pos และ end_pos
มาทดลองตัวอย่างเพื่อแสดงให้เห็นเมธอด startswith() ในการทำงาน
สมมติว่าเราเป็นผู้ดำเนินการอาร์เคด และเรากำลังดำเนินโปรโมชั่นพิเศษ ลูกค้าทุกคนที่ชื่อเริ่มต้นด้วย J มีสิทธิ์ได้ตั๋วเพิ่ม 200 ใบ สำหรับทุก 1000 ตั๋วที่พวกเขาชนะที่อาร์เคด เพื่อแลกตั๋วนี้ ลูกค้าต้องสแกนบัตรอาร์เคดที่เคาน์เตอร์ ซึ่งรันโปรแกรมตรวจสอบตัวอักษรแรกของชื่อพวกเขา
นี่คือโค้ดที่เราสามารถใช้เพื่อตรวจสอบว่าตัวอักษรแรกของชื่อลูกค้าเท่ากับ J หรือไม่:
customer_name = "John Milton"
print(customer_name.startswith("J"))
โค้ดของเราคืนค่า: True ในบรรทัดแรกของโค้ด เรากำหนดตัวแปรชื่อ customer_name ที่เก็บชื่อของลูกค้าของเรา จากนั้นเราใช้ startswith() เพื่อตรวจสอบว่าตัวแปร "customer_name" เริ่มต้นด้วย J หรือไม่ ในกรณีนี้ ชื่อลูกค้าของเราเริ่มต้นด้วย J ดังนั้นโปรแกรมของเราคืนค่า True
หากคุณไม่ระบุอาร์กิวเมนต์ start_pos หรือ end_pos startswith() จะค้นหาซับสตริงที่คุณระบุเฉพาะที่ต้นทางของสตริง
ตอนนี้ สมมติว่าเรากำลังเปลี่ยนโปรโมชั่น และเฉพาะคนที่ชื่อมี s ระหว่างตัวอักษรที่ 2 ถึง 5 ของชื่อเต็ม เราสามารถตรวจสอบว่าชื่อเต็มของลูกค้ามี s ระหว่างตัวอักษรที่ 2 ถึง 5 ของชื่อเต็มได้ด้วยโค้ดนี้:
customer_name = "John Milton"
print(customer_name.startswith("s", 1, 5))
โค้ดของเราคืนค่า: False ในโค้ดของเรา เราระบุพารามิเตอร์ start_pos และ end_pos ซึ่งตั้งค่าเป็น 1 และ 5 ตามลำดับ นี่บอก startswith() ให้ค้นหาตัวอักษร s เฉพาะระหว่างตัวอักษรที่ 2 ถึง 5 ในสตริงของเรา (ตัวอักษรที่มีค่าดัชนีระหว่าง 1 และ 5)
Python Endswith
เมธอดจัดรูปแบบสตริง endswith() สามารถใช้ตรวจสอบว่าสตริงจบด้วยค่าเฉพาะหรือไม่ endswith() ทำงานในลักษณะเดียวกับเมธอด startswith() แต่แทนที่จะค้นหาซับสตริงที่ต้นทางของสตริง มันค้นหาที่ปลายทาง
นี่คือไวยากรณ์สำหรับเมธอด endswith():
string_name.endswith(substring, start_pos, end_pos)
นิยามสำหรับพารามิเตอร์เหล่านี้เหมือนกับที่ใช้กับเมธอด startswith()
มาสำรวจตัวอย่างเพื่อแสดงให้เห็นว่าเมธอด endswith() สามารถใช้ใน Python ได้อย่างไร สมมติว่าเราดำเนินการสายการบิน และเราต้องการประมวลผลเงินคืนบนบัตรเครดิตของลูกค้า เพื่อทำเช่นนั้น เราต้องทราบเลข 4 หลักสุดท้ายของหมายเลขบัตรของพวกเขา เพื่อที่จะตรวจสอบกับหมายเลขที่เรามีในไฟล์
นี่คือตัวอย่างของ endswith() ที่ใช้ตรวจสอบว่าเลข 4 หลักที่ลูกค้าให้ตรงกับในไฟล์หรือไม่:
on_file_credit_card = '4242 4242 4242 4242'
matches = on_file_credit_card.endswith('4242')
print(matches)
โปรแกรมของเราคืนค่า: True ในกรณีนี้ ลูกค้าของเราให้เลข 4242 เราใช้เมธอด endswith() เพื่อตรวจสอบว่าเลขเหล่านั้นตรงกับที่เรามีในไฟล์หรือไม่ ในกรณีนี้ บัตรเครดิตในไฟล์จบด้วย 4242 ดังนั้นโปรแกรมของเราคืนค่า True
เรายังสามารถใช้พารามิเตอร์ start_pos และ end_pos ที่เป็นตัวเลือก เพื่อค้นหาซับสตริงที่ตำแหน่งดัชนีเฉพาะ
สมมติว่าเราดำเนินร้านคาเฟ่ และเรามีสตริงที่เก็บทุกอย่างที่ลูกค้าสั่ง หัวหน้าเชฟต้องการทราบว่าออเดอร์มี Ham Sandwich หรือไม่ และทราบว่าความยาวของสตริงของเราคือ 24 ตัวอักษร 5 ตัวอักษรสุดท้ายของสตริงของเรามี ORDER ดังนั้น เราต้องการข้ามตัวอักษร 5 ตัวแรกในสตริงของเรา
เราสามารถทำการค้นหานี้ด้วยโค้ดต่อไปนี้:
order = "ORDER Latte Ham Sandwich"
includes_ham_sandwich = order.endswith("Ham Sandwich", 0, 19)
print(includes_ham_sandwich)
โค้ดของเราคืนค่า: True
ในตัวอย่างของเรา เราระบุ Ham Sandwich เป็นพารามิเตอร์ substring
จากนั้นเราระบุ 0 เป็นพารามิเตอร์ start_pos เพราะเราจะใช้พารามิเตอร์ end_pos และ start_pos ไม่สามารถว่างได้เมื่อเราใช้ end_pos เราระบุ 19 เป็นอาร์กิวเมนต์ end_pos ของเรา เพราะ 5 ตัวอักษรสุดท้ายของสตริงของเราคือ ORDER และตัวอักษรก่อนหน้านั้นคือช่องว่าง
สตริงของเราจบด้วย Ham Sandwich ดังนั้นโปรแกรมของเราคืนค่า True หากสตริงของเราไม่จบด้วย Ham Sandwich suffix จะคืนค่า False
Python Endswith กับ Lists
เพิ่มเติม endswith() สามารถรับลิสต์หรือทูเพิลเป็นอาร์กิวเมนต์ substring ได้ ซึ่งช่วยให้คุณตรวจสอบว่าสตริงจบด้วยสตริงหนึ่งในหลายสตริง สมมติว่าเราสร้างโปรแกรมที่ตรวจสอบว่าชื่อไฟล์จบด้วย .mp3 หรือ .mp4 เราสามารถทำการตรวจสอบนี้ด้วยโค้ดต่อไปนี้:
potential_extensions = ['.mp3', '.mp4'] file_name = 'music.mp3' print(file_name.endswith(potential_extensions))
โค้ดของเราคืนค่า: True ในตัวอย่างนี้ เราสร้างอาร์เรย์ชื่อ potential_extensions ที่เก็บลิสต์ของนามสกุลไฟล์ จากนั้นเราประกาศตัวแปรชื่อ file_name ที่เก็บชื่อไฟล์ที่เราต้องการตรวจสอบนามสกุล
สุดท้าย เราใช้เมธอด endswith() เพื่อตรวจสอบว่าสตริงของเราจบด้วยนามสกุลใดนามสกุลหนึ่งในลิสต์ potential_extensions ของเรา ในกรณีนี้ ชื่อไฟล์ของเราจบด้วย .mp3 ซึ่งอยู่ในลิสต์ potential_extensions ของเรา ดังนั้นโปรแกรมของเราคืนค่า True
สรุป
เมธอด startswith() และ endswith() สามารถใช้ตรวจสอบว่าสตริง Python เริ่มต้นหรือจบด้วยซับสตริงเฉพาะ ตามลำดับ แต่ละเมธอดมีพารามิเตอร์ตัวเลือกที่ช่วยให้คุณระบุได้ว่าการค้นหาควรเริ่มและสิ้นสุดที่ไหนภายในสตริง
บทช่วยสอนนี้อภิบายวิธีใช้ทั้งเมธอด startswith() และ endswith() และสำรวจตัวอย่างบางส่วนของแต่ละเมธอดในการทำงาน ตอนนี้คุณพร้อมที่จะตรวจสอบว่าสตริงเริ่มต้นหรือจบด้วยซับสตริงโดยใช้เมธอด startswith() และ endswith() อย่างมืออาชีพแล้ว