Notes & software courses · Free to learn
Aph's Blog
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) แทนที่ช่องว่างในประโยคด้วยขีดล่าง _