string.gsub() để thay thế
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 35 trên 54.
Khi làm việc với chuỗi, bạn thường cần tìm và thay thế văn bản. Hàm string.gsub() của Lua giúp bạn thực hiện việc này dễ dàng bằng cách thay thế toàn cục: tìm mọi lần xuất hiện của một mẫu và thay chúng bằng nội dung khác.
Cú pháp cơ bản nhận ba đối số (argument): chuỗi (string) ban đầu, mẫu cần tìm và văn bản thay thế:
local result = string.gsub(originalString, pattern, replacement)Đây là một ví dụ đơn giản thay thế mọi dấu cách bằng dấu gạch dưới:
local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned) -- Đầu ra: hello_world_from_luaHàm trả về hai giá trị: chuỗi đã chỉnh sửa và số lần thay thế. Bạn có thể nhận cả hai giá trị nếu cần:
local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result) -- Đầu ra: baz bar baz
print(count) -- Đầu ra: 2Khác với một số hàm chuỗi (string function) chỉ tìm kết quả khớp đầu tiên, string.gsub() mặc định thay thế mọi lần xuất hiện, nên rất phù hợp với các tác vụ làm sạch văn bản như xóa ký tự không mong muốn hoặc chuẩn hóa định dạng.
Thử thách
DễViết một hàm (function) cleanText nhận text và trả về phiên bản đã làm sạch, trong đó mọi dấu cách được thay bằng dấu gạch dưới.
Dùng string.gsub() để thay mọi ký tự dấu cách trong văn bản bằng ký tự dấu gạch dưới.
Tham số:
text(chuỗi): Văn bản cần làm sạch
Giá trị trả về: Văn bản có mọi dấu cách được thay bằng dấu gạch dưới (chuỗi)
Tự làm thử
function cleanText(text)
-- Viết code ở đây
end
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
4Giới thiệu về metatable
Metatable là gì?setmetatable và getmetatableMetamethod __indexMetamethod __newindexMetamethod __tostringMetamethod số học phần 1Metamethod số học phần 2Ôn tập: bảng chỉ đọc7Thao tác chuỗi nâng cao
string.gsub() để thay thếGiới thiệu mẫu chuỗistring.find()string.match()Lặp với string.gmatch()Ôn tập: trình phân tích tệp nhật ký2Các hàm khác của thư viện table
table.concat()Tạo table và unpack()table.sort()Sắp xếp tùy chỉnh bằng hàmÔn tập: Bảng điểm cao5Dự án: Bộ máy trò chơi phiêu lưu bằng văn bản
Thiết lập dự án: Căn phòngLiên kết các phòngTự luyện tập: Trình biên dịch Lua online