On this page
String — ลำดับของตัวอักษร
👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ
ข้อความก็เป็นลำดับเหมือนลิสต์ — index, slice ได้ พร้อมเมธอดจัดการข้อความที่เจอบ่อยในงานจริงและข้อสอบ
String (ข้อความ) คือลำดับของตัวอักษร จึงทำหลายอย่างได้เหมือนลิสต์ (index, slice, len, วน loop) แต่มีข้อต่างสำคัญ: แก้ตัวอักษรในตำแหน่งไม่ได้ (immutable) หัวข้อนี้รวมเมธอดที่ใช้บ่อยที่สุดในการทำงานจริง
String เป็นลำดับ — index และ slice
python
s = "Hello"
print(s[0]) # H (ตัวแรก index 0)
print(s[-1]) # o (ตัวสุดท้าย)
print(s[1:4]) # ell (slice เหมือนลิสต์)
print(s[::-1]) # olleH (กลับข้อความ)
print(len(s)) # 5
for ch in s: # วนทีละตัวอักษร
print(ch)
# s[0] = "J" # TypeError! แก้ตัวอักษรไม่ได้ (immutable)
s = "J" + s[1:] # ต้องสร้างใหม่แทน -> 'Jello'immutable หมายความว่าอย่างไร
string แก้ไขในที่ไม่ได้ ทุกเมธอดที่ "เปลี่ยน" ข้อความจริง ๆ แล้วสร้าง string ใหม่คืนมา ของเดิมไม่เปลี่ยน ฉะนั้นต้องเก็บผลลัพธ์ไว้ในตัวแปร เช่น s = s.upper()
เมธอดที่ใช้บ่อยที่สุด
python
s = " Hello World "
print(s.upper()) # ' HELLO WORLD '
print(s.lower()) # ' hello world '
print(s.strip()) # 'Hello World' (ตัดช่องว่างหัวท้าย)
print(s.strip().title()) # 'Hello World' -> ขึ้นต้นคำตัวใหญ่
print("Hello".replace("l", "L")) # 'HeLLo'
print("a,b,c".split(",")) # ['a', 'b', 'c'] (ตัดเป็นลิสต์)
print("-".join(["a","b","c"])) # 'a-b-c' (รวมลิสต์เป็นข้อความ)| เมธอด | ทำอะไร |
|---|---|
| upper() / lower() | เปลี่ยนเป็นตัวพิมพ์ใหญ่/เล็ก |
| strip() | ตัดช่องว่าง (หรือตัวที่ระบุ) หัวท้าย |
| replace(a, b) | แทนที่ a ด้วย b ทุกตำแหน่ง |
| split(sep) | ตัดข้อความเป็นลิสต์ตามตัวคั่น |
| join(list) | รวมลิสต์เป็นข้อความ |
| find(x) / index(x) | หาตำแหน่งของ x |
| startswith / endswith | เช็คขึ้นต้น/ลงท้ายด้วยอะไร |
ตรวจสอบเนื้อหาของข้อความ
python
print("Hello".startswith("He")) # True
print("file.txt".endswith(".txt"))# True
print("abc" in "abcdef") # True (มี substring ไหม)
print("123".isdigit()) # True (เป็นตัวเลขล้วนไหม)
print("abc".isalpha()) # True (เป็นตัวอักษรล้วนไหม)
print("Hello World".count("o")) # 2 (มี o กี่ตัว)ตัวอย่างใช้งานจริง
python
# 1) นับจำนวนคำในประโยค
sentence = "the quick brown fox"
words = sentence.split() # ['the','quick','brown','fox']
print(len(words)) # 4
# 2) ทำให้ชื่อขึ้นต้นตัวใหญ่และตัดช่องว่างเกิน
name = input("ชื่อ: ").strip().title()
print(f"สวัสดีคุณ {name}")
# 3) เช็คพาลินโดรม
word = "level"
print(word == word[::-1]) # Trueสรุปหัวข้อนี้
- string เป็นลำดับตัวอักษร — index, slice, len, วน loop ได้เหมือนลิสต์
- string เป็น immutable — เมธอดที่ "เปลี่ยน" จริง ๆ สร้างใหม่ ต้องเก็บผลไว้
- เมธอดหลัก: upper/lower, strip, replace, split, join
- ตรวจสอบ: in, startswith/endswith, isdigit/isalpha, count
- split() + join() คู่หูจัดการข้อความ <-> ลิสต์
แบบฝึกหัด
1) รับประโยค แล้วนับจำนวนคำและจำนวนตัวอักษร (ไม่นับช่องว่าง) 2) รับชื่อ-นามสกุล แล้วแสดงเป็นตัวพิมพ์ใหญ่ทั้งหมด 3) เช็คว่าคำที่รับเป็นพาลินโดรมไหม 4) รับอีเมล แล้วเช็คว่ามี @ และลงท้าย .com ไหม 5) แทนที่ช่องว่างในประโยคด้วยขีดล่าง _