Menu
CoddyTech

Giới thiệu mẫu chuỗi

Thuộc phần Logic và luồng chương trình trong hành trình Lua của Coddy. Bài học 36 trên 54.

Ở bài học trước, bạn đã dùng string.gsub() để tìm văn bản chính xác như dấu cách hoặc từ cụ thể. Nhưng nếu bạn cần tìm «bất kỳ chữ số nào» hoặc «bất kỳ chữ cái nào» mà không biết chính xác ký tự thì sao? Đây là lúc các mẫu chuỗi phát huy tác dụng.

Mẫu chuỗi trong Lua giúp mô tả loại văn bản bạn đang tìm, thay vì chính xác văn bản đó. Chúng đơn giản hơn biểu thức chính quy nhưng đủ mạnh cho hầu hết các tác vụ xử lý văn bản.

Lua cung cấp các mã đặc biệt gọi là lớp ký tự, dùng để khớp với các nhóm ký tự. Dưới đây là những lớp phổ biến nhất:

%d  -- khớp với mọi chữ số (0-9)
%a  -- khớp với mọi chữ cái (a-z, A-Z)
%s  -- khớp với mọi ký tự khoảng trắng (character) (dấu cách, tab, xuống dòng)
%w  -- khớp với mọi ký tự chữ hoặc số (chữ cái và chữ số)
%p  -- khớp với mọi ký tự dấu câu

Đây là cách bạn có thể dùng các mẫu này với string.find() để tìm chữ số đầu tiên trong chuỗi:

local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position)  -- Đầu ra: 6

Bạn cũng có thể dùng các phiên bản viết hoa của những lớp này để khớp với phần ngược lại. Ví dụ: %D khớp với mọi ký tự không phải chữ số, còn %A khớp với mọi ký tự không phải chữ cái.

challenge icon

Thử thách

Dễ

Viết một hàm (function) containsDigit nhận text và trả về liệu văn bản có chứa ít nhất một chữ số hay không.

Dùng string.find() với lớp ký tự %d để kiểm tra xem chuỗi có chữ số nào không.

Tham số:

  • text (chuỗi): Văn bản cần kiểm tra chữ số

Giá trị trả về: true nếu văn bản chứa ít nhất một chữ số, nếu không thì trả về false (kiểu boolean)

Tự làm thử

function containsDigit(text)
    -- Viết code ở đây
end
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Lua online