string.gsub для преобразований
Заменяйте шаблоны строками, функциями или обращениями к таблицам через gsub.
«string.gsub для преобразований» — бесплатный урок Lua Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Lua Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Lua Academy содержит 4 уроков всего.
Что такое string.gsub?
string.gsub(s, pattern, repl, n) заменяет в s вхождения pattern на repl. Возвращает новую строку и количество замен.
Простая замена строки
Заменяйте все вхождения буквальной подстроки.
local s = "hello world world"
local result, count = s:gsub("world", "Lua")
print(result, count) -- hello Lua Lua 2Ограничение числа замен
Передайте четвёртый аргумент, чтобы ограничить количество замен.
local s = "aaa bbb aaa"
print(s:gsub("aaa", "xxx", 1)) -- xxx bbb aaa 1Замена по шаблону
Заменяйте все цифры фиксированной строкой.
local s = "abc 123 def 456"
print(s:gsub("%d+", "NUM")) -- abc NUM def NUM 2Замена функцией
Если repl — функция, она вызывается для каждого захвата (или совпадения целиком), а её возвращаемое значение заменяет совпадение.
local s = "price: 100, tax: 15"
local result = s:gsub("%d+", function(n)
return tostring(tonumber(n) * 1.1)
end)
print(result) -- price: 110.0, tax: 16.5Замена с помощью таблицы
Если repl — таблица, каждое совпадение (или захваченное значение) используется как ключ, а значение таблицы заменяет совпадение.
local vars = {name="Alice", lang="Lua"}
local tmpl = "Hello, {name}! Welcome to {lang}."
local result = tmpl:gsub("{(%w+)}", vars)
print(result) -- Hello, Alice! Welcome to Lua.Удаление пробелов
Используйте string.gsub, чтобы удалить пробелы в начале и конце строки.
local function trim(s)
return s:gsub("^%s+", ""):gsub("%s+$", "")
end
print("[" .. trim(" hello ") .. "]") -- [hello]Изменение регистра
Используйте string.gsub с функцией, чтобы преобразовать каждую букву в верхний или нижний регистр.
local function toUpper(s)
return s:gsub("%a", string.upper)
end
print(toUpper("hello world")) -- HELLO WORLDЭкранирование специальных символов
Экранируйте все специальные символы шаблона в строке, чтобы использовать её как буквальный шаблон.
local function escapePat(s)
return s:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1")
endИспользование возвращаемого количества
Второе возвращаемое значение — количество замен — удобно для определения того, произошла ли хотя бы одна замена.
local s = "no numbers here"
local result, n = s:gsub("%d+", "X")
if n == 0 then print("nothing replaced") endШаблон для движка шаблонов
Простой движок шаблонов заменяет заполнители {{key}} значениями из таблицы данных.
local function render(tmpl, data)
return (tmpl:gsub("{{(%w+)}}", data))
end
print(render("Hi {{name}}!", {name="Bob"})) -- Hi Bob!Вопрос о string.gsub
Что передаётся функции, если repl в string.gsub является функцией?
Повторение: string.gsub
string.gsub — универсальный инструмент преобразования строк: он выполняет замены строками, функциями (для динамических вычислений) или таблицами (для поиска по словарю). Он также возвращает количество замен.
Изучай Lua с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 40
- Уроки
- 159
Часто задаваемые вопросы
Урок «string.gsub для преобразований» бесплатный?
Да — полный текст урока «string.gsub для преобразований» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Lua Academy, подпишись на CoddyKit PRO. Курс Lua Academy содержит 4 уроков всего.
Чему я научусь в уроке «string.gsub для преобразований»?
Заменяйте шаблоны строками, функциями или обращениями к таблицам через gsub. Ты практикуешь Lua Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Lua Academy?
Предыдущий опыт не требуется. Lua Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «string.gsub для преобразований»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Lua Academy?
Да. Каждый урок Lua Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Синтаксис шаблонов Lua
- Захваты и string.match
- string.gmatch для токенизации
- string.gsub для преобразований