Bỏ qua để đến nội dung

Xử lý chuỗi ký tự (String)

Trong chuyên đề này, chúng ta sẽ học và giải các bài tập liên quan đến chuỗi ký tự (string): tên, câu, mật khẩu, địa chỉ email… Gồm 2 phần: ôn lý thuyết chuỗi, sau đó thực hành 26 bài xếp từ dễ đến khó - ghép chuỗi, đếm ký tự, lấy chuỗi con, thay thế, tìm kiếm, tách câu thành danh sách từ…

Chuỗi là một dãy ký tự: chữ cái, chữ số, dấu cách, dấu câu… Ví dụ Scratch, Nguyen Van An, abc123. Câu trả lời người dùng gõ vào khối hỏi [] và đợi (lưu trong khối (trả lời)) luôn là một chuỗi. Các ký tự trong chuỗi được đánh số từ 1: trong chuỗi Scratch, ký tự thứ 1 là S, ký tự thứ 7 là h.

Cả 4 khối đều nằm trong nhóm Các toán tử (màu xanh lá). Xem thêm ở bài Toán tử.

(kết hợp [Xin chào, ] [Scratch!])
(ký tự thứ (1) của chuỗi [Scratch])
(độ dài của [Scratch])
<[Scratch] chứa ký tự [cra]?>
  • (kết hợp [] []) ghép 2 chuỗi thành 1: Xin chào, Scratch!. Muốn ghép 3 chuỗi trở lên thì lồng nhiều khối (kết hợp [] []) vào nhau.
  • (ký tự thứ () của chuỗi []) lấy ra 1 ký tự ở vị trí cho trước. Nếu vị trí vượt quá độ dài chuỗi, khối trả về chuỗi rỗng.
  • (độ dài của []) trả về số ký tự của chuỗi (tính cả dấu cách).
  • <[] chứa ký tự []?> kiểm tra chuỗi thứ nhất có chứa chuỗi thứ hai hay không - chuỗi thứ hai có thể dài hơn 1 ký tự (cra ở ví dụ trên).
khi bấm vào @greenFlag
hỏi [Nhập một chuỗi:] và đợi
đặt [chuỗi v] thành (trả lời)
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (độ dài của (chuỗi))>
nói (ký tự thứ (i) của chuỗi (chuỗi)) trong (0.5) giây
thay đổi [i v] một lượng (1)
end

Giống hệt cách duyệt danh sách - chỉ thay (kích thước của [danh sách v]) bằng (độ dài của []), và (phần tử thứ () của [danh sách v]) bằng (ký tự thứ () của chuỗi []).

Dựng một chuỗi mới (mẫu dùng lại nhiều lần)

Phần tiêu đề “Dựng một chuỗi mới (mẫu dùng lại nhiều lần)”
đặt [kết quả v] thành []
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (độ dài của (chuỗi))>
đặt [kết quả v] thành (kết hợp (kết quả) (ký tự thứ (i) của chuỗi (chuỗi)))
thay đổi [i v] một lượng (1)
end

Ví dụ với chuỗi abc, biến (kết quả) lớn dần qua từng vòng lặp:

Vòng lặp(i)Ký tự lấy ra(kết quả) sau vòng lặp
Trước khi lặp--(rỗng)
11aa
22bab
33cabc

Bắt đầu từ một chuỗi rỗng (ô trống), rồi mỗi vòng (kết hợp [] []) thêm một ký tự vào cuối - giống như “cộng dồn” nhưng với chữ. Đoạn trên chép lại nguyên chuỗi; các bài phía dưới chỉ việc thêm nếu <> thì để chọn ký tự nào được thêm, hoặc thêm ký tự khác vào.

<[0123456789] chứa ký tự (ký tự)?>
<[aeiouy] chứa ký tự (ký tự)?>

Muốn biết một ký tự có phải chữ số (hay nguyên âm…) không, ta viết sẵn cả nhóm thành một chuỗi mẫu rồi hỏi chuỗi mẫu có chứa ký tự đó không - gọn hơn nhiều so với so sánh <() = ()> với từng giá trị rồi nối bằng <<> hoặc <>>.

Mỗi bài có đánh dấu độ khó: ⭐ dễ, ⭐⭐ trung bình, ⭐⭐⭐ khó. Học sinh tiểu học nên làm hết các bài ⭐ và ⭐⭐ (Nhóm 1-3); các bài ⭐⭐⭐ (Nhóm 4-5) dành cho học sinh THCS hoặc các bạn muốn thử thách thêm.

Chưa cần vòng lặp - chỉ dùng các khối chuỗi đã học ở Phần 1.

Hỏi họ, rồi hỏi tên của người dùng, sau đó nói họ tên đầy đủ (có dấu cách ở giữa). Ví dụ họ Nguyen, tên An → Nguyen An.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Hỏi tên người dùng, sau đó nói Xin chào An! Tên bạn có 2 ký tự.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một chuỗi, nói ra ký tự đầu tiên và ký tự cuối cùng của chuỗi.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Hỏi tên người dùng. Nếu tên có nhiều hơn 5 ký tự thì nói Tên của bạn khá dài!, ngược lại nói Tên của bạn ngắn gọn!.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Dùng vòng lặp để đi qua từng ký tự của chuỗi, đếm hoặc dựng dần một chuỗi mới.

Nhập một chuỗi, nói lần lượt từng ký tự kèm số thứ tự của nó. Ví dụ Meo → 1: M, 2: e, 3: o.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một chuỗi và số N, tạo chuỗi mới gồm chuỗi đó lặp lại N lần. Ví dụ ha, N = 3 → hahaha.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một câu, đếm xem câu đó có bao nhiêu dấu cách. Ví dụ toi di hoc có 2 dấu cách.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một câu, đếm xem chữ a xuất hiện bao nhiêu lần. Ví dụ ba ma an na có 4 chữ a.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Kết hợp vòng lặp với nếu <> thì, mẹo chuỗi mẫu và mẫu dựng chuỗi mới để kiểm tra, xoá, thay thế ký tự.

Nhập một chuỗi bất kỳ, đếm xem có bao nhiêu ký tự là chữ số. Ví dụ lop 6A2 nam 2025 có 6 chữ số.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 10: Tổng các chữ số trong chuỗi ⭐⭐

Phần tiêu đề “Bài 10: Tổng các chữ số trong chuỗi ⭐⭐”

Nhập một chuỗi gồm cả chữ và số, tính tổng các chữ số xuất hiện trong chuỗi. Ví dụ a1b2c3 → 1 + 2 + 3 = 6.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 11: Chèn dấu gạch giữa các ký tự ⭐⭐

Phần tiêu đề “Bài 11: Chèn dấu gạch giữa các ký tự ⭐⭐”

Nhập một chuỗi, chèn dấu - vào giữa các ký tự. Ví dụ Scratch → S-c-r-a-t-c-h.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 12: Xoá một ký tự khỏi chuỗi ⭐⭐

Phần tiêu đề “Bài 12: Xoá một ký tự khỏi chuỗi ⭐⭐”

Nhập một chuỗi và một ký tự, xoá mọi lần xuất hiện của ký tự đó. Ví dụ banana, xoá a → bnn.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một chuỗi, ký tự cũ và ký tự mới, thay mọi ký tự cũ bằng ký tự mới. Ví dụ banana, thay a bằng @ → b@n@n@.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một chuỗi và hai vị trí a, b (a ≤ b). Lấy ra phần chuỗi từ ký tự thứ a đến ký tự thứ b. Ví dụ Scratch, a = 2, b = 4 → cra.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một câu tiếng Việt không dấu, đếm số nguyên âm (a, e, i, o, u, y) và số phụ âm (các chữ cái còn lại). Dấu cách, chữ số, dấu câu không tính.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập họ tên (các từ cách nhau đúng 1 dấu cách), cho nhân vật nói ra chữ viết tắt gồm chữ cái đầu của mỗi từ. Ví dụ Nguyen Van An → NVA.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một mật khẩu. Mật khẩu mạnh khi có ít nhất 8 ký tự, có ít nhất 1 chữ số và ít nhất 1 chữ cái. Nói Mật khẩu mạnh hoặc Mật khẩu yếu.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một địa chỉ email, kiểm tra theo 2 quy tắc đơn giản: có ký tự @ nhưng không đứng đầu, và có dấu . ở phía sau @. Ví dụ [email protected] hợp lệ; an.gmail.com, @gmail.com, an@gmail không hợp lệ.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập tên một tệp và một đuôi, kiểm tra tên tệp có kết thúc bằng đuôi đó không. Ví dụ tro choi.sb3 có đuôi .sb3, còn anh.png thì không.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập chuỗi lớn và chuỗi con, tìm vị trí đầu tiên chuỗi con xuất hiện trong chuỗi lớn (không dùng khối <[] chứa ký tự []?>). Ví dụ tìm na trong banana → vị trí 3. Nếu không có thì báo Không tìm thấy.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một chuỗi chữ cái, nén các ký tự giống nhau đứng liền nhau thành “ký tự + số lần”. Ví dụ aaabbc → a3b2c1.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một câu (các từ cách nhau đúng 1 dấu cách), cho nhân vật nói ra câu với các từ theo thứ tự ngược lại. Ví dụ hom nay troi dep → dep troi nay hom.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một câu (các từ cách nhau đúng 1 dấu cách), tìm từ dài nhất. Nếu có nhiều từ dài bằng nhau thì lấy từ xuất hiện đầu tiên.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Tách chuỗi thành danh sách rồi dùng lại các kỹ thuật của chuyên đề danh sách.

Bài 24: Tách câu thành danh sách từ ⭐⭐⭐

Phần tiêu đề “Bài 24: Tách câu thành danh sách từ ⭐⭐⭐”

Nhập một câu (các từ cách nhau đúng 1 dấu cách), tách từng từ đưa vào danh sách (các từ :: list), rồi hiện danh sách lên sân khấu.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 25: Đếm số lần một từ xuất hiện ⭐⭐⭐

Phần tiêu đề “Bài 25: Đếm số lần một từ xuất hiện ⭐⭐⭐”

Nhập một câu và một từ, đếm xem từ đó xuất hiện bao nhiêu lần trong câu. Ví dụ câu con meo con cho con ga, từ con → 3 lần.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một câu, đếm số lần xuất hiện của từng chữ cái a-z. Hiện 2 danh sách song song: (chữ cái :: list) (a, b, c…) và (số lần :: list) tương ứng.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Thầy cô và các em muốn mua bộ bài giải và code của các bài tập trong chuyên đề này vui lòng liên hệ tác giả qua Zalo 0972465159 hoặc Facebook. Xin cảm ơn.