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() по умолчанию заменяет каждое вхождение, что делает её идеальной для задач по очистке текста, таких как удаление нежелательных символов или стандартизация форматирования.
Задание
ЛегкоНапишите функцию 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) -- Вывод: 2string.gsub() по умолчанию заменяет каждое вхождение, а не только первое совпадение.
Попробуйте сами
function cleanText(text)
-- Напишите код здесь
end
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа4Введение в метатаблицы
Что такое метатаблица?setmetatable и getmetatableМетаметод __indexМетаметод __newindexМетаметод __tostringАрифметические метаметоды. Часть 1Арифметические метаметоды. Часть 2Итоги — Таблица только для чтения7Продвинутая работа со строками
string.gsub() для подстановкиВведение в строковые шаблоныstring.find()string.match()Итерация с помощью string.gmatch()Итоги — Парсер лог-файлов2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов