18 ก.ค. 2020 เวลา 08:30 • วิทยาศาสตร์ & เทคโนโลยี
เรามาถึงพื้นฐาน string เรื่องสุดท้ายที่ผมจะนำมาเสนอก่อนที่เราจะไปหัวข้ออื่นนะครับ เนื่องจาก string มีส่วนที่ต้องรู้อีกเยอะมาก จึงฝากให้เพื่อน ๆ ศึกษาหาข้อมูลเพิ่มเติมจากอินเทอร์เน็ตเอานะครับ วันนี้เราจะต่อจากครั้งที่แล้วเลยเป็นเรื่องที่ยากอีกขั้นหนึ่ง นั่นก็คือ Slicing String
จากเรื่องที่แล้วสมมติเรามีสายอักขระหนึ่งเป็น text=‘Slicing String’ เราจะสามารถดึงได้เพียงอักษรเดียวเท่านั้นมา เช่น text[10]=‘r’ และ text[-2]=‘n’
แต่ถ้าหากเราอยากได้สายอักขระย่อย ‘cing’ จาก text เราจะทำอย่างไรล่ะ?
บางคนอาจตอบว่า text[3]+text[4]+text[5]+text[6] ซึ่งก็เป็นคำตอบที่ถูกต้องนะครับ
แล้วเรามีวิธีที่สั้นกว่านั้นไหม?
คำตอบคือ มี นั่นคือการใช้ Slicing String นั่นเอง
ยกตัวอย่างเดิมหากเราต้องการ ‘cing’ จากสายอักขระ text เราสามารถใช้ text[3:7] ได้เลย ซึ่งมันหมายความว่า ‘จากสายอักขระ text ให้นำตัวอักษรจากตำแหน่งที่ 3 ไปจนถึงตัวอักษรลำดับที่ก่อน 7 (ลำดับที่ 6 นั่นเอง) มาต่อกัน
แปลความหมายอีกรอบเพื่อความเข้าใจ
sring[a:b] หมายถึงนำตัวอักษรจากสายอักขระ string ตำแหน่งที่ a ต่อกันไปเรื่อย ๆ จนถึงตำแหน่งที่ b-1 โดยที่ a<b
มีอีกแบบนั่นก็คือ string[a:b:c] คือการนำตัวอักษรตั้งแต่ตำแหน่งที่ a ต่อกันไปเรื่อย ๆ จนถึงตำแหน่งที่ b และ c คือ step การเพิ่มหรือการลด
โดยที่ ถ้า a<b แล้ว c>0; และ ถ้า a>b แล้ว c<0 ยกตัวอย่างสายอกขระเดิมจะได้ว่า
text[3:8:2]=‘cn ‘
text[-2:-6:-3]=‘nr’ (ใช้สำหรับการนับถอยหลัง)
จบไปแล้วนะครับกับการแนะนำพื้นฐานเรื่อง string สำหรับใครที่อยากเพิ่มเติม ติชม หรือมีข้อสงสัยใด ๆ สามารถแสดงความคิดเห็นบอกกันมาได้นะครับ
คำถามประจำบท
1. กำหนดให้ text=‘What do yOu Mean?’
จงตอบคำถามต่อไปนี้ว่าสายอักขระที่ว่าคืออะไร
a) text[2:6]
b) text[3:8]
c) text[1:10:4]
d) text[-2,-12,3]
e) จงเขียนโปรแกรมเพื่อหาคำว่า ‘aMuy’ และ ‘My W’ จาก text ดังกล่าว โดยใช้ Slicing String
ถ้าใครมีคำถามหรือข้อเสนอแนะ comment มาได้นะครับ ยินดีรับฟังทุกความคิดเห็นเลย
เรื่องอื่นเพิ่มเติม: https://www.blockdit.com/articles/5eedede2db20a50cafa7a2b3
Created by MickeyMouse
โฆษณา