การใช้งาน String

ความหมายของ String

String คือ ข้อความหรือตัวอักษรที่เรียงต่อๆ กันที่อยู่ในเครื่องหมายคำพูดแบบ Double Quotes (ฟันหนู) เช่น “How are you? ”หรือ Single Quotes (ฝนทอง) เช่น ‘How are you? '

ฟังก์ชัน len()

มีฟังก์ชันสำหรับ String อยู่หลายฟังก์ชัน เช่น ฟังก์ชัน len() มีวัตถุประสงค์เพื่อหาความยาวของ String นั้น และสำหรับการระบุตำแหน่งของตัวอักษรแต่ละตัวใน String จะใช้สัญลักษณ์ก้ามปู [] โดยตัวชี้หรือ Index จะเริ่มต้นจาก 0 เช่น fruit[0] ตัวอย่างการใช้ฟังก์ชัน len() และการใช้สัญลักษณ์ก้ามปู [] มีดังต่อไปนี้

การใช้ฟังก์ชัน len() และการใช้สัญลักษณ์ก้ามปู [ ]
>>> fruit = 'banana'
>>> fruit
'banana'
>>> len(fruit)
6
>>> type(fruit)
<class 'str'>
>>> fruit[0]
'b'
>>> fruit[1]
'a'
>>> fruit[2]
'n'

การเดินทางตามตัวชี้ของ String

วิธีการเดินทางไปเรื่อยๆ ตามตัวชี้ของ String เป็นดังตัวอย่างต่อไปนี้ โดยในผลลัพธ์ชุดแรกจะเกิดจากการใช้ while Statement ส่วนในผลลัพธ์ถัดมาจะใช้ตัวแปร String เป็น Iterator โดยการใช้ for Statement ซึ่งผลลัพธ์จะออกมาเหมือนกัน

ตัวอย่างการเดินทางตามตัวชี้ของ String
fruit = 'banana'
i = 0
while i < len(fruit):
   print(fruit[i], end=' ')
   i += 1
print()
for character in fruit:
   print(character, end=' ')

ผลลัพธ์เป็นดังนี้

ผลลัพธ์ตัวอย่างการเดินทางตามตัวชี้ของ String
b a n a n a
b a n a n a

การตัดคำใน String

การตัดคำใน String ด้วยตัวชี้ (Index) โดยการตัดคำเป็นส่วนย่อยๆ จะมีรูปแบบการเขียนเป็น [start:end] โดยที่ start เป็นตำแหน่งของ Index เริ่มต้นที่ต้องการ และ end นั้นเป็นตำแหน่งก่อนหน้าตำแหน่งสุดท้ายของตัวอักษรที่ต้องการ ตัวอย่างการทำ String slices เป็นดังต่อไปนี้

การทำ String slices
>>> s = 'Monty Python'
>>> s
'Monty Python'
>>> len(s)
12
>>> s[0:1]
'M'
>>> s[0]
'M'
>>> s[0:2]
'Mo'

หากเขียนเป็น [start:] ระบุจุดเริ่มต้นที่ start ผลลัพธ์จะแสดงยาวไปจนถึงจุดสิ้นสุด และหากเขียนเป็น [:end] ผลลัพธ์ที่ได้จะแสดงอักษรตั้งแต่ตัวแรกหรือตัวชี้ที่ศูนย์ไปจนถึงตัวสิ้นสุดที่ระบุไว้ ตัวอย่างการเขียน String slices แบบไม่ระบุต้นหรือปลาย เป็นดังต่อไปนี้

การเชียน String slices แบบไม่ระบุต้นหรือปลาย
>>> s[1:]
'onty Python'
>>> s[:5]
'Monty'

โครงสร้างข้อมูลที่เปลี่ยนแปลงไม่ได้

String เป็นโครงสร้างข้อมูลที่เปลี่ยนแปลงไม่ได้ ดังนั้นถ้าหากต้องการสร้าง String ใหม่ก็ต้องสร้างเป็น Object ใหม่เท่านั้น ตัวอย่างการสร้าง String ใหม่เป็นดังต่อไปนี้

การค้นหาตัวอักษรใน String

การเขียนโปรแกรมเพื่อค้นหาตัวอักษรใน String แล้วส่งค่าออกมาเป็นค่าตัวชี้ตัวอักษรใน String มีผังงานด้งต่อไปนี้

  • ให้ฟังก์ชันชื่อว่า find มีการส่งค่า str เป็น string และค่า char เป็น character

  • ตั้งตัวนับ i เริ่มต้นที่ 0

  • ขณะที่ i ยังน้อยกว่าจำนวนตัวอักษรใน string ที่ชื่อว่า str ให้ดำเนินการดังนี้คือ

    • ตรวจสอบว่า ถ้าตัวชี้ของตัวอักษรเท่ากับตัวอักษรที่ต้องการแล้ว ให้ส่งค่าตัวนับออกมา

  • เมื่อ while เป็นเท็จแล้ว หรือเมื่อค้นจนครบ character ใน string แล้วให้ส่งค่ากลับคือ -1

จากผังงานดังกล่าวสามารถเขียนเป็นฟังก์ชันในภาษา Python ได้ดังนี้

ตัวอย่างการสร้างโปรแกรมเพื่อค้นหาตัวอักษรใน String
def find(str, char):
   i = 0
   while i < len(str):
      if str[i] == char:
         return i
      i += 1
   return -1

ซึ่งจะได้ผลลัพธ์ดังนี้

ผลลัพธ์การสร้างโปรแกรมเพื่อค้นหาตัวอักษรใน String
>>> find('Mike', 'c')
-1
>>> find('Mike', 'e')
3

เมธอดของ String (String Methods)

การดำเนินการกับ String สามารถศึกษาฟังก์ชันได้ที่ https://docs.python.org/2.4/lib/string-methods.html เช่น str.upper() ใช้ทำงานเพื่อแปลงตัวอักษรภาษาอังกฤษเป็นตัวพิมพ์ใหญ่ ตัวอย่างการใช้ String methods เป็นดังต่อไปนี้

การใช้ String methods
>>> s = 'Monty Python'
>>> s
'Monty Python'
>>> s.count('t')
2
>>> s.capitalize()
'Monty python'
>>> s.upper()
'MONTY PYTHON'

in โอเปอร์เรเตอร์

in โอเปอร์เรเตอร์ ใช้ในการพิสูจน์ค่าแบบ Boolean Expression เช่น 't' in s แปลว่า ตัวอักษรตัว t อยู่ใน String ชื่อว่า s หรือไม่ หรือในทางตรงข้ามเพื่อการตรวจสอบว่าไม่มีหรือไม่ให้ใส่ not in ดังตัวอย่างต่อไปนี้

การใช้ in operator
>>> 't' in s
True

การเปรียบเทียบ String

การเปรียบเทียบ String สามารถใช้สัญลักษณ์ (> , < , <= , <= , == , != ) เพื่อเปรียบเทียบค่าของ String สองชุด โดยดูผลลัพธ์ของการเปรียบเทียบค่าของ ASCII value นั้นๆ ดังตัวอย่างต่อไปนี้

การเปรียบเทียบ String สองชุด
>>> 'banana' == 'banana'
True
>>> 'banana' != 'banana'
False
>>> 'banana' > 'banana'
False
>>> 'banana' < 'banana'
False
>>> 'banana' > 'Banana'
True
>>> 'banana' > 'bazooka'
False

การจัดวางรูปแบบของ String (String Formatting)

การเปลี่ยนการจัดวางรูปแบบของ String มีสองวิธีคือ แบบ Classic ซึ่งทำได้โดยใส่สัญลักษณ์ + แต่สัญลักษณ์นี้จะมีข้อจำกัดคือไม่สามารถแทรกข้อความระหว่างกันได้ แต่หากใช้สัญลักษณ์ % จะช่วยแก้ไขข้อจำกัดนี้ได้ เช่น %s สำหรับ string และ %d สำหรับตัวเลข ตัวอย่างการเปลี่ยนการจัดวางของ String โดยใช้ %s เป็นดังต่อไปนี้

การเปลี่ยนการจัดวางของ String โดยใช้ %s
>>> 'Hello' + 'Mike'
'HelloMike'
>>> 'Hello %s' % 'Mike'
'Hello Mike'

และตัวอย่างการเปลี่ยนการจัดวางของ String โดยใช้ %d เป็นดังต่อไปนี้

การเปลี่ยนการจัดวางของ String โดยใช้ %d
>>> 'Total is %d baht' % 12
'Total is 12 baht'

ส่วนการเปลี่ยนการจัดวางของ String แบบ Modern คือ ใช้ .format และระบุ Parameters ได้มากกว่า 1 ตัว อีกทั้งยังสามารถจัดเรียงลำดับ Parameters สลับก่อนหลังได้ตามสะดวก สามารถศึกษาเพิ่มเติมได้ที่ https://docs.python.org/3/library/string.html#format-examples ตัวอย่างการจัดวาง String โดยใช้ .format() เป็นดังต่อไปนี้

การจัดวาง String โดยใช้ .format()
>>> x = 12
>>> 'Total is {0} baht.'.format(x)
'Total is 12 baht.'
>>> 'Total is {1} baht. Mr. {0}.'.format('Mike', x)
'Total is 12 baht. Mr. Mike.'

แบบฝึกหัด

  1. เขียนฟังก์ชันต่อไปนี้

    • รับค่าข้อความ 'James had had had the cat.'

    • นับจำนวนคำว่า had

  2. เขียนฟังก์ชันต่อไปนี้

    • รับค่าข้อความ 'I intend to live forever, or die trying.'

    • แทนค่าคำว่า to ด้วย three

  3. เขียนฟังก์ชันต่อไปนี้

    • คำนวณความยาวของ String ที่รับมาจากผู้ใช้

  4. เขียนฟังก์ชันต่อไปนี้

    • รับ String มาแล้วเปลี่ยนค่ากลับกันระหว่างตัวอักษรตัวแรกกับตัวสุดท้ายของ String นั้น