string.find()
Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 37 из 54.
Теперь, когда вы понимаете классы символов, вы можете использовать их с string.find(), чтобы искать шаблоны вместо точного текста. Это открывает широкие возможности для проверки и анализа текста.
Функция string.find() работает с шаблонами так же, как и с буквальными строками. Она возвращает позицию, где шаблон впервые совпадает:
local text = "User123"
local position = string.find(text, "%d")
print(position) -- Вывод: 5Это находит первую цифру в строке, которая находится на позиции 5. Вы также можете искать противоположное с помощью классов символов в верхнем регистре:
local code = "ABC123"
local position = string.find(code, "%D")
print(position) -- Вывод: 1Здесь %D соответствует любому нецифровому символу, поэтому находит первую букву в позиции 1.
Распространённая задача валидации — проверить, начинается ли строка с определённого шаблона. Вы можете использовать якорь ^ в начале шаблона, чтобы сопоставление выполнялось только в начале строки:
local username = "player42"
local startsWithLetter = string.find(username, "^%a")
if startsWithLetter then
print("Valid username")
else
print("Username must start with a letter")
endЭтот шаблон проверяет, начинается ли строка с буквы, что делает его полезным для проверки ввода, когда требуются определённые форматы.
Задание
ЛегкоНапиши функцию startsWithLetter, которая принимает text и возвращает, начинается ли строка с буквы.
Используй string.find() с якорем ^ и классом символов %a, чтобы проверить, начинается ли строка с буквы.
Параметры:
text(string): Строка для проверки
Возвращает: true, если строка начинается с буквы, и false в противном случае (boolean)
Попробуйте сами
function startsWithLetter(text)
-- Напишите код здесь
end
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
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()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордовПотренируйтесь самостоятельно: Онлайн-компилятор Lua