Menu
CoddyTech

string.find()

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 37 trên 54.

Bây giờ bạn đã hiểu về các lớp ký tự, bạn có thể dùng chúng với string.find() để tìm kiếm mẫu thay vì văn bản chính xác. Điều này mở ra nhiều khả năng hữu ích để xác thực và phân tích văn bản.

Hàm string.find() hoạt động với mẫu theo cách giống như với chuỗi ký tự nguyên văn. Hàm trả về vị trí khớp đầu tiên với mẫu:

local text = "User123"
local position = string.find(text, "%d")
print(position)  -- Đầu ra: 5

Phần này tìm chữ số đầu tiên trong chuỗi, nằm ở vị trí 5. Bạn cũng có thể tìm kiếm điều ngược lại bằng cách dùng lớp ký tự (character class) chữ hoa:

local code = "ABC123"
local position = string.find(code, "%D")
print(position)  -- Đầu ra: 1

Ở đây, %D khớp với mọi ký tự không phải chữ số, nên nó tìm thấy chữ cái đầu tiên ở vị trí 1.

Một tác vụ xác thực thường gặp là kiểm tra xem chuỗi có bắt đầu bằng một mẫu cụ thể hay không. Bạn có thể dùng neo ^ ở đầu mẫu để chỉ khớp tại đầu chuỗi:

local username = "player42"
local startsWithLetter = string.find(username, "^%a")

if startsWithLetter then
    print("Valid username")
else
    print("Username must start with a letter")
end

Mẫu này kiểm tra xem chuỗi có bắt đầu bằng một chữ cái hay không, nên rất hữu ích khi xác thực đầu vào cần tuân theo một định dạng nhất định.

challenge icon

Thử thách

Dễ

Viết một hàm (function) startsWithLetter nhận text và trả về kết quả cho biết chuỗi (string) có bắt đầu bằng một chữ cái hay không.

Dùng string.find() với ký hiệu neo ^ và lớp ký tự %a để kiểm tra xem chuỗi có bắt đầu bằng một chữ cái hay không.

Tham số:

  • text (chuỗi): Chuỗi cần xác thực

Giá trị trả về: true nếu chuỗi bắt đầu bằng một chữ cái, nếu không thì trả về false (kiểu boolean)

Tự làm thử

function startsWithLetter(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