如何编写 Lua 模式将字符串(嵌套数组)转换为实际数组?
how to write a Lua pattern to convert string (nested array) into a real array?
我想把一个字符串转成一个数组(游戏中的小地图,有坐标,颜色等等),字符串代表一个嵌套的数组,不知道怎么办。我想在第一个 { 之后打开一个数组,然后在每个 { 之后打开一个数组,然后读取 key/value 直到 } :
function stringToArray()
local Array = {}
local txt = "{ {Group = 123, Pos = 200}, {Group = 124, Pos = 205} }"
for str in string.gmatch(txt, .....
end
因为该字符串实际上是有效的 lua 语法,您可以使用 load()
简单地执行它
例如
local txt = "{ {Group = 123, Pos = 200}, {Group = 124, Pos = 205} }"
local Array = load("return " .. txt)()
print(Array[1].Group) --prints 123
注意:对于 lua 版本 5.1 或更低版本,它是函数 loadstring()
没有像 load() 这样可能被沙盒化的函数
你必须解析字符串并构造(key/value 对)你想要的东西。
进一步 decisions/conditions 和分析的好主意可能是
计算不需要构建的内容...
local txt = "{ {Group = 123, Pos = 200}, {Group = 124, Pos = 205} }"
local _, lcurlies = txt:gsub('%{','')
local _, rcurlies = txt:gsub('%}','')
local _, commas = txt:gsub(',','')
local _, spaces = txt:gsub('%s','')
local _, equals = txt:gsub('=','')
print(lcurlies,rcurlies,commas,spaces,equals)
-- Puts out: 3 3 3 13 4
我想把一个字符串转成一个数组(游戏中的小地图,有坐标,颜色等等),字符串代表一个嵌套的数组,不知道怎么办。我想在第一个 { 之后打开一个数组,然后在每个 { 之后打开一个数组,然后读取 key/value 直到 } :
function stringToArray()
local Array = {}
local txt = "{ {Group = 123, Pos = 200}, {Group = 124, Pos = 205} }"
for str in string.gmatch(txt, .....
end
因为该字符串实际上是有效的 lua 语法,您可以使用 load()
例如
local txt = "{ {Group = 123, Pos = 200}, {Group = 124, Pos = 205} }"
local Array = load("return " .. txt)()
print(Array[1].Group) --prints 123
注意:对于 lua 版本 5.1 或更低版本,它是函数 loadstring()
没有像 load() 这样可能被沙盒化的函数
你必须解析字符串并构造(key/value 对)你想要的东西。
进一步 decisions/conditions 和分析的好主意可能是
计算不需要构建的内容...
local txt = "{ {Group = 123, Pos = 200}, {Group = 124, Pos = 205} }"
local _, lcurlies = txt:gsub('%{','')
local _, rcurlies = txt:gsub('%}','')
local _, commas = txt:gsub(',','')
local _, spaces = txt:gsub('%s','')
local _, equals = txt:gsub('=','')
print(lcurlies,rcurlies,commas,spaces,equals)
-- Puts out: 3 3 3 13 4