6 методов проверки наличия слова в строке в Lua

При работе с Lua вы часто можете столкнуться с ситуациями, когда вам нужно проверить, присутствует ли в строке определенное слово. Это может быть полезно для таких задач, как сопоставление ключевых слов, анализ текста или фильтрация данных. В этой статье мы рассмотрим несколько методов и предоставим примеры кода, которые помогут вам эффективно выполнить эту задачу.

Метод 1: поиск строки
Lua предоставляет встроенную функцию string.find, которую можно использовать для поиска слова в строке. Эта функция возвращает начальный и конечный индексы слова, если оно найдено, или ноль в противном случае. Вот пример:

local str = "This is a sample string."
local word = "sample"
if string.find(str, word) then
    print("Word found!")
else
    print("Word not found.")
end

Метод 2: Сопоставление строк
Функция string.matchLua позволяет выполнять сопоставление строки с образцом. Вы можете использовать эту функцию, чтобы проверить, существует ли слово в строке, используя шаблон, соответствующий этому слову. Вот пример:

local str = "This is another example."
local word = "example"
if string.match(str, word) then
    print("Word found!")
else
    print("Word not found.")
end

Метод 3: String Gmatch
Функция string.gmatchLua позволяет перебирать все вхождения слова в строку. Он возвращает функцию-итератор, которую можно использовать в цикле для поиска нескольких экземпляров слова. Вот пример:

local str = "This is a word word word."
local word = "word"
local found = false
for match in string.gmatch(str, word) do
    found = true
    print("Word found!")
end
if not found then
    print("Word not found.")
end

Метод 4: разделение и итерация строк
Вы можете разделить строку на отдельные слова, используя функцию Lua string.gmatchс шаблоном, соответствующим словам. Затем переберите разделенные слова и проверьте, существует ли нужное слово. Вот пример:

local str = "This is a sentence."
local word = "sentence"
local found = false
for w in string.gmatch(str, "%w+") do
    if w == word then
        found = true
        print("Word found!")
        break
    end
end
if not found then
    print("Word not found.")
end

Метод 5: поиск строки по шаблону
Вы можете использовать функцию Lua string.findс шаблоном, чтобы проверить, существует ли слово в строке, игнорируя при этом чувствительность к регистру. Этого можно добиться, используя модификатор шаблона «%l», чтобы сделать поиск нечувствительным к регистру. Вот пример:

local str = "This is a Case-InSeNsItIvE word."
local word = "cAsE-INsEnSiTiVe"
if string.find(str:lower(), word:lower()) then
    print("Word found!")
else
    print("Word not found.")
end

Метод 6: регулярное выражение
Если вам требуются более расширенные возможности сопоставления с образцом, Lua поддерживает регулярные выражения через библиотеку lpeg. Вы можете использовать регулярные выражения для поиска слов в строке со сложными критериями соответствия. Вот пример:

local lpeg = require "lpeg"
local str = "This is a string with multiple words."
local word = "multiple"
if lpeg.match(lpeg.P(word), str) then
    print("Word found!")
else
    print("Word not found.")
end

В этой статье мы рассмотрели различные методы проверки наличия слова в строке в Lua. Мы рассмотрели такие методы, как string.find, string.match, string.gmatch, разделение строк и итерация, сопоставление шаблонов с учетом регистра и регулярные выражения. Используя эти методы, вы можете легко выполнять операции поиска слов в Lua, что дает вам возможность создавать более сложные приложения и эффективно выполнять анализ текста.