В Lua манипуляции со строками — обычная задача, и часто требуется разбиение строк на более мелкие части. Разделение строки предполагает разделение ее на несколько подстрок на основе указанного символа-разделителя или шаблона. В этой статье мы рассмотрим несколько методов разделения строк в Lua, приведя примеры кода для каждого подхода.
Метод 1: использование функции string.gmatch()
Пример кода:
local str = "Hello,World,from,Lua"
local delimiter = ","
for word in str:gmatch("[^" .. delimiter .. "]+") do
print(word)
end
Метод 2: использование функции string.match() с группой захвата
Пример кода:
local str = "Hello;World;from;Lua"
local delimiter = ";"
for word in str:gmatch("[^" .. delimiter .. "]+") do
print(word)
end
Метод 3. Разделение строк с помощью функции string.gsub()
Пример кода:
local str = "Hello.World.from.Lua"
local delimiter = "%."
local words = {}
str:gsub("[^" .. delimiter .. "]+", function(word)
table.insert(words, word)
end)
for _, word in ipairs(words) do
print(word)
end
Метод 4. Использование вспомогательной функции string.split() (индивидуальная реализация)
Пример кода:
function string.split(str, delimiter)
local pattern = "[^" .. delimiter .. "]+"
local words = {}
str:gsub(pattern, function(word)
table.insert(words, word)
end)
return words
end
local str = "Hello|World|from|Lua"
local delimiter = "|"
local words = string.split(str, delimiter)
for _, word in ipairs(words) do
print(word)
end
В этой статье мы рассмотрели несколько методов разделения строк в Lua. Мы рассмотрели использование встроенных функций, таких как string.gmatch(), string.match()и string.gsub(). Кроме того, мы предоставили специальную реализацию вспомогательной функции string.split(). Эти методы обеспечивают гибкость, когда дело доходит до разделения строк на основе различных разделителей или шаблонов. Понимая эти методы, вы сможете эффективно манипулировать и обрабатывать строки в своих программах Lua.
Не забудьте выбрать подходящий метод в зависимости от ваших конкретных требований и использовать предоставленные примеры кода в качестве отправной точки для ваших собственных проектов. Приятного кодирования!