Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Tên người dùng, bình luận, email, tin nhắn: gần như mọi dữ liệu con người nhìn thấy đều là văn bản. Trong lập trình, văn bản được lưu dưới dạng chuỗi ký tự, và biết xử lý chuỗi là kỹ năng bạn dùng gần như mỗi ngày.
Chuỗi (string) là một dãy các ký tự, đặt trong dấu nháy đơn hoặc nháy kép. Về bản chất, chuỗi giống một mảng các ký tự nên bạn có thể truy cập từng ký tự bằng chỉ số:
s = "Lập trình"
print(len(s)) # 9 (tính cả khoảng trắng)
print(s[0]) # L
print(s[-1]) # h
print(s[0:3]) # LậpỞ nhiều ngôn ngữ như Python, Java, JavaScript, chuỗi là bất biến (immutable): bạn không sửa trực tiếp một ký tự, mà tạo ra chuỗi mới. Viết s[0] = "l" trong Python sẽ báo lỗi.
email = " Nguyen@Example.com "
sach = email.strip().lower()
print(sach) # nguyen@example.com
print(sach.replace("@", " at ")) # nguyen at example.com
print("example" in sach) # True
print(sach.split("@")) # ['nguyen', 'example.com']
print(", ".join(["a", "b", "c"])) # a, b, cstrip() cắt khoảng trắng hai đầu.lower(), upper() đổi chữ thường, chữ hoa.split() tách chuỗi thành danh sách, join() làm ngược lại.replace() thay thế, find() tìm vị trí.startswith(), endswith() kiểm tra đầu và cuối chuỗi.Có thể nối bằng dấu +, nhưng cách gọn và dễ đọc hơn là chuỗi định dạng (f-string trong Python):
ten = "Lan"
diem = 8.5
print("Chào " + ten + ", điểm " + str(diem))
print(f"Chào {ten}, điểm {diem}")
print(f"Điểm làm tròn: {diem:.0f}")JavaScript có chuỗi mẫu tương tự bằng dấu huyền: `Chào ${ten}`. Nối chuỗi trong vòng lặp rất lớn nên dùng danh sách rồi join để tránh tạo quá nhiều chuỗi trung gian.
Một số ký tự cần viết kèm dấu gạch chéo ngược: \n xuống dòng, \t tab, \" dấu nháy kép bên trong chuỗi nháy kép. Ví dụ:
print("Dòng 1\nDòng 2")
print("Anh ấy nói: \"Chào bạn\"")Máy tính lưu chữ bằng số. Ngày xưa mỗi quốc gia một bảng mã, nay chuẩn Unicode (thường lưu dưới dạng UTF-8) hỗ trợ hầu hết chữ viết trên thế giới, trong đó có tiếng Việt đầy đủ dấu. Điều này kéo theo vài lưu ý:
def la_doi_xung(s):
s = s.lower().replace(" ", "")
return s == s[::-1]
print(la_doi_xung("Madam")) # True
print(la_doi_xung("Xin chào")) # False
def dem_tu(cau):
return len(cau.split())
print(dem_tu("học lập trình thật vui")) # 5Hàm đầu kiểm tra chuỗi đối xứng (palindrome), hàm sau đếm số từ. Các bài như đảo từ trong câu, đếm nguyên âm, đếm tần suất ký tự đều là bài tập tốt.
s.upper() mà không gán kết quả lại.Các trang web thường biến tiêu đề thành đường dẫn thân thiện. Đây là bài tập xử lý chuỗi thực tế:
import re
import unicodedata
def tao_slug(tieu_de):
s = unicodedata.normalize("NFD", tieu_de.lower())
s = "".join(c for c in s if unicodedata.category(c) != "Mn")
s = s.replace("đ", "d")
s = re.sub(r"[^a-z0-9]+", "-", s)
return s.strip("-")
print(tao_slug("Lập trình là gì?")) # lap-trinh-la-giHàm chuẩn hóa chuỗi về dạng tách dấu, loại bỏ các dấu thanh, đổi chữ "đ", rồi thay mọi ký tự không phải chữ hoặc số bằng dấu gạch ngang. Ví dụ cho thấy chuỗi tiếng Việt cần xử lý Unicode cẩn thận chứ không chỉ thay thế đơn giản. Hãy thử với vài tiêu đề của riêng bạn và xem ký tự nào còn sót lại.
Chuỗi tưởng đơn giản nhưng ẩn nhiều chi tiết: bất biến, Unicode, định dạng. Thành thạo vài hàm cốt lõi như strip, split, join, replace, bạn đã xử lý được phần lớn công việc văn bản hằng ngày. Hãy thử viết một chương trình đếm tần suất từ trong một đoạn văn để luyện tay.
Học xong lý thuyết, hãy thực hành thật nhiều; các bài giảng có bài tập trong khóa học codebem.com sẽ giúp bạn việc đó.
Nguyễn Đình Cường
0 comment