Использование match в динамической строке

Bill Florends

Участник
Автор темы
8
5
Версия MoonLoader
.026-beta
Уважаемые форумчане, нужна ваша помощь.

Пример задачи:

Пример:
local a = 'x=1|y=2|z=3'
local b = 'y=1|z=2|y=3'
local var = "z"
local result = math.random(a or b) -- логика я думаю тут понятна (рандомно выбрать a или b), синтаксис скорее всего не верный, но суть в другом

result = result:match('var..'=(%s+)') -- нужно найти значение переменной с названием var

return result
Подробнее:
Есть string result переменная, она может в разном порядке иметь переменные перечисленные через '|', но конечная переменная не имеет границы '|'
Нужно вытащить значение переменной под названием, которое берётся из переменной var


Пример моего кода:
fbm.lua:
function GetVarFromFie(id, var)
    local directIni = getWorkingDirectory()..u8'\\config\\FBM\\Points\\'..id..'.ini'
    local file, err = io.open(directIni, "r")
    local temp = u8''
    for line in io.lines(directIni) do
       temp = temp..'|'..line
    end

    local tmp = temp:match(var..'=(%s+)')
    sampAddChatMessage('[FBM]: Результат '..var..' - '..tmp, -1)
end
function LoadPointsDB()
    GetVarFromFie("1", "x1")
end

Ошибка:
162: attempt to concatenate local 'tmp' (a nil value)
stack traceback:
Ругается на строку 10 "sampAddChatMessage('[FBM]: Результат '..var..' - '..tmp, -1)"
 
Последнее редактирование:

chapo

чопа сребдс // @moujeek
Модератор
8,934
11,704
json нынче не в моде?
(%s+) замени на (%d+)
1734463880267.png
 
  • Нравится
Реакции: Bill Florends