Menu
Coddy logo textTech

string.gsub() для подстановки

Часть раздела Logic & Flow путешествия по Lua на Coddy — урок 35 из 54.

При работе со строками часто возникает необходимость найти и заменить текст. Функция Lua string.gsub() упрощает эту задачу, выполняя глобальную подстановку — находя все вхождения шаблона и заменяя их чем-то другим.

Базовый синтаксис принимает три аргумента: исходную строку, шаблон для поиска и текст для замены:

local result = string.gsub(originalString, pattern, replacement)

Вот простой пример, который заменяет все пробелы подчеркиваниями:

local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned)  -- Результат: hello_world_from_lua

Функция возвращает два значения: измененную строку и количество выполненных замен. При необходимости вы можете получить оба значения:

local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result)  -- Вывод: baz bar baz
print(count)   -- Вывод: 2

В отличие от некоторых строковых функций, которые находят только первое совпадение, string.gsub() по умолчанию заменяет каждое вхождение, что делает её идеальной для задач по очистке текста, таких как удаление нежелательных символов или стандартизация форматирования.

challenge icon

Задание

Легко

Напишите функцию cleanText, которая принимает text и возвращает очищенную версию, в которой все пробелы заменены на подчеркивания.

Используйте string.gsub(), чтобы заменить каждый символ пробела в тексте на символ подчеркивания.

Параметры:

  • text (string): Текст для очистки

Возвращает: Текст, в котором все пробелы заменены на подчеркивания (string)

Шпаргалка

Функция string.gsub() выполняет глобальную подстановку, находя все вхождения шаблона и заменяя их:

local result = string.gsub(originalString, pattern, replacement)

Пример замены пробелов на подчеркивания:

local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned)  -- Вывод: hello_world_from_lua

Функция возвращает два значения: измененную строку и количество выполненных замен:

local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result)  -- Вывод: baz bar baz
print(count)   -- Вывод: 2

string.gsub() по умолчанию заменяет каждое вхождение, а не только первое совпадение.

Попробуйте сами

function cleanText(text)
    -- Напишите код здесь
end
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow