Menu
CoddyTech

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

Этот шаблон проверяет, начинается ли строка с буквы, что делает его полезным для проверки ввода, когда требуются определённые форматы.

Чтобы найти сам специальный символ, например точку, либо экранируйте его с помощью %, либо отключите шаблоны, выполнив обычный поиск (1 — начать с первого символа, true — обычный поиск):

print(string.find("v1.5", "%."))         -- Вывод: 3 3
print(string.find("v1.5", ".", 1, true))  -- Вывод: 3 3
print(string.find("v1.5", "."))          -- Вывод: 1 1 (. соответствует любому символу)
challenge icon

Задание

Легко

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

Используйте string.find() с якорем ^ и классом символов %a, чтобы проверить, начинается ли строка с буквы.

Параметры:

  • text (строка): строка для проверки

Возвращает: true, если строка начинается с буквы, и false в противном случае (логическое значение)

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

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

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

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Lua