การใช้งาน String
ความหมายของ String
String คือ ข้อความหรือตัวอักษรที่เรียงต่อๆ กันที่อยู่ในเครื่องหมายคำพูดแบบ Double Quotes (ฟันหนู) เช่น “How are you? ”หรือ Single Quotes (ฝนทอง) เช่น ‘How are you? '
ฟังก์ชัน len()
มีฟังก์ชันสำหรับ String อยู่หลายฟังก์ชัน เช่น ฟังก์ชัน len()
มีวัตถุประสงค์เพื่อหาความยาวของ String นั้น
และสำหรับการระบุตำแหน่งของตัวอักษรแต่ละตัวใน String
จะใช้สัญลักษณ์ก้ามปู []
โดยตัวชี้หรือ Index จะเริ่มต้นจาก 0 เช่น
fruit[0]
ตัวอย่างการใช้ฟังก์ชัน 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 ซึ่งผลลัพธ์จะออกมาเหมือนกัน
fruit = 'banana'
i = 0
while i < len(fruit):
print(fruit[i], end=' ')
i += 1
print()
for character in fruit:
print(character, end=' ')
ผลลัพธ์เป็นดังนี้
b a n a n a
b a n a n a
การตัดคำใน String
การตัดคำใน String ด้วยตัวชี้ (Index) โดยการตัดคำเป็นส่วนย่อยๆ
จะมีรูปแบบการเขียนเป็น [start:end]
โดยที่ start เป็นตำแหน่งของ
Index เริ่มต้นที่ต้องการ และ end
นั้นเป็นตำแหน่งก่อนหน้าตำแหน่งสุดท้ายของตัวอักษรที่ต้องการ
ตัวอย่างการทำ 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 แบบไม่ระบุต้นหรือปลาย เป็นดังต่อไปนี้
>>> 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
จากผังงานดังกล่าวสามารถเขียนเป็นฟังก์ชันในภาษาไพทอนได้ดังนี้
def find(str, char):
i = 0
while i < len(str):
if str[i] == char:
return i
i += 1
return -1
ซึ่งจะได้ผลลัพธ์ดังนี้
>>> 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 เป็นดังต่อไปนี้
>>> 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
ดังตัวอย่างต่อไปนี้
>>> 't' in s
True
การเปรียบเทียบ String
การเปรียบเทียบ String สามารถใช้สัญลักษณ์ (> , < , <= , <= , == ,
!=
) เพื่อเปรียบเทียบค่าของ String สองชุด
โดยดูผลลัพธ์ของการเปรียบเทียบค่าของ ASCII value นั้นๆ
ดังตัวอย่างต่อไปนี้
>>> '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 เป็นดังต่อไปนี้
>>> 'Hello' + 'Mike'
'HelloMike'
>>> 'Hello %s' % 'Mike'
'Hello Mike'
และตัวอย่างการเปลี่ยนการจัดวางของ 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() เป็นดังต่อไปนี้
>>> 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.'
แบบฝึกหัด
เขียนฟังก์ชันต่อไปนี้
รับค่าข้อความ
'James had had had the cat.'
นับจำนวนคำว่า had
เขียนฟังก์ชันต่อไปนี้
รับค่าข้อความ
'I intend to live forever, or die trying.'
แทนค่าคำว่า to ด้วย three
เขียนฟังก์ชันต่อไปนี้
คำนวณความยาวของ String ที่รับมาจากผู้ใช้
เขียนฟังก์ชันต่อไปนี้
รับ String มาแล้วเปลี่ยนค่ากลับกันระหว่างตัวอักษรตัวแรกกับตัวสุดท้ายของ String นั้น