Lua Academy · Урок

string.gsub для преобразований

Заменяйте шаблоны строками, функциями или обращениями к таблицам через gsub.

Урок 4 из 413 шагов

«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 — локальная установка не требуется.

Все уроки этого курса

  1. Синтаксис шаблонов Lua
  2. Захваты и string.match
  3. string.gmatch для токенизации
  4. string.gsub для преобразований
← Назад к Lua Academy