Эффективные способы разделения строк на две подстроки по пробелу в Lua

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

Метод 1: использование функции string.gmatch

local str = "Hello World"
local first, second = str:match("([^%s]+)%s+(.*)")
print(first)   -- Output: Hello
print(second)  -- Output: World

Метод 2: использование функции string.find

local str = "Hello World"
local spaceIndex = str:find(" ")
local first = str:sub(1, spaceIndex - 1)
local second = str:sub(spaceIndex + 1)
print(first)   -- Output: Hello
print(second)  -- Output: World

Метод 3: использование функции string.match с шаблоном

local str = "Hello World"
local first, second = str:match("(%S+)%s+(%S+)")
print(first)   -- Output: Hello
print(second)  -- Output: World

Метод 4. Использование функции string.gsplit (требуется сторонняя библиотека Penlight)

local pl = require("pl.import_into")()
local str = "Hello World"
local parts = pl.stringx.gsplit(str, " ")
local first = parts()
local second = parts()
print(first)   -- Output: Hello
print(second)  -- Output: World

Метод 5: использование цикла и string.sub

local str = "Hello World"
local spaceIndex
for i = 1, #str do
  if str:sub(i, i) == " " then
    spaceIndex = i
    break
  end
end
local first = str:sub(1, spaceIndex - 1)
local second = str:sub(spaceIndex + 1)
print(first)   -- Output: Hello
print(second)  -- Output: World

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