ดีครับดอทคอม

เขียนโปรแกรมภาษา Python ตอนที่ 53 ค้นหาข้อความใน String ด้วยเมธอด find()

ค้นหาข้อความในสตริง ด้วยเมธอด find() ใน Python

เขียนโปรแกรมภาษา Python ตอนที่ 53 ค้นหาข้อความใน String ด้วยเมธอด find()

เมธอด find() เป็นเมธอดของสตริง ที่ใช้สำหรับค้นหาคำที่ต้องการในสตริง โดยจะคืนค่ากลับมาเป็นตัวเลขบอกตำแหน่งของคำที่ระบุ ที่ปรากฏครั้งแรกในสตริง เช่น ถ้าหาคำว่า Python และมีคำนี้อยู่ในสตริง 2 ครั้ง จะได้ผลลัพธ์เป็นตำแหน่งของคำว่า Python ที่ปรากฏครั้งแรกเท่านั้น

แต่ถ้าไม่มีคำที่ค้นหาอยู่ในสตริง จะคืนค่ากลับมาเป็น -1

รูปแบบการใช้งานเมธอด find() จะเป็นดังนี้

string.find(value, start, end)

  • value คือ ค่าที่ต้องการค้นหา
  • start คือ ตำแหน่งแรกที่จะเริ่มค้นหา (จะระบุหรือไม่ก็ได้) ค่าเริ่มต้นเป็น 0
  • end คือ ตำแหน่งสุดท้ายที่จะให้ค้นหา (จะระบุหรือไม่ก็ได้) ค่าเริ่มต้นเป็นตำแหน่งสุดท้ายของตัวอักษรในสตริง

ตัวอย่างการใช้งานเมธอด find()

mytext = "Python Is Great. I Love Python."
x = mytext.find("Love")

print(x)    # x = 19

จากโค้ดตัวอย่าง ผลลัพธ์จะเป็น 19 เพราะตำแหน่งที่ค้นเจอคำว่า Love ครั้งแรก อยู่ที่ตัวอักษรลำดับที่ 19 (นับเริ่มจาก 0) ในสตริง

ตัวอย่างการใช้งานเมธอด find() แบบระบุตำแหน่งเริ่มต้นและตำแหน่งสิ้นสุด

mytext = "Python Is Great. I Love Python."
x = mytext.find("Love", 10, 30)

print(x)    # x = 19

จากโค้ดตัวอย่าง ให้ค้นหาคำว่า Love ในสตริง โดยเริ่มค้นจากตัวอักษรลำดับที่ 10 ไปจนถึงตัวอักษรลำดับที่ 30 (เริ่มนับจาก 0) จะได้ผลลัพธ์ 19 เหมือนในตัวอย่างก่อนหน้านี้ เพราะเวลาคืนค่าผลลัพธ์กลับมาเป็นตำแหน่งของตัวอักษรในสตริง ไพธอนจะนับตำแหน่งเริ่มจากตัวอักษรตัวแรกในสตริง (ไม่ได้เริ่มนับจากตำแหน่งที่เริ่มค้นหา)

ถ้าไม่เจอคำที่ค้นหา จะคืนค่ากลับมาเป็น -1

การใช้งานเมธอด find() ถ้าไม่เจอค่าที่ค้นหาอยู่ในสตริง จะคืนค่ากลับมาเป็น -1 ดังนี้

mytext = "Python Is Great. I Love Python."
x = mytext.find("Is", 10, 30)

print(x)    # x = -1

จากโค้ดตัวอย่าง สั่งให้ค้นหาคำว่า “Is” โดยให้เริ่มค้นหาตั้งแต่ตัวอักษรที่อยู่ในตำแหน่ง 10 ไปจึงถึงตำแหน่ง 30 ทำให้ไม่พบคำว่า “Is” อยู่ในสตริง เพราะคำว่า “Is” อยู่ก่อนตำแหน่งที่ 10 นั่นเอง จึงทำให้ผลลัพธ์เป็น -1