在 Lua 中将字符串转换为数组
Converting a string to an array in Lua
为什么这个语法有效:
if ({A=1,B=1,C=1})["A"] then print("hello") end
虽然这不是:
local m = {string.sub(string.gsub("A,B,C,", ",", "=1,"),1,-2)}
if (m)["A"] then print("hello") end
???
我认为这是因为字符串不是数组,但是如何将字符串("a,b,c"
)转换为数组({a=1,b=1,c=1}
)?
这一行
local m = {string.sub(string.gsub("A,B,C,", ",", "=1,"),1,-2)}
相当于这个
local v = string.sub(string.gsub("A,B,C,", ",", "=1,"),1,-2)
local m = {v}
我希望你同意,这显然不会在 m
table.
中分配多个值的行为
要将简单的 a=1,b=1,c=1
类型字符串“解析”为 table,手册中 string.gmatch
的第二个示例很有帮助:
The next example collects all pairs key=value from the given string into a table:
t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
t[k] = v
end
为什么这个语法有效:
if ({A=1,B=1,C=1})["A"] then print("hello") end
虽然这不是:
local m = {string.sub(string.gsub("A,B,C,", ",", "=1,"),1,-2)}
if (m)["A"] then print("hello") end
???
我认为这是因为字符串不是数组,但是如何将字符串("a,b,c"
)转换为数组({a=1,b=1,c=1}
)?
这一行
local m = {string.sub(string.gsub("A,B,C,", ",", "=1,"),1,-2)}
相当于这个
local v = string.sub(string.gsub("A,B,C,", ",", "=1,"),1,-2)
local m = {v}
我希望你同意,这显然不会在 m
table.
要将简单的 a=1,b=1,c=1
类型字符串“解析”为 table,手册中 string.gmatch
的第二个示例很有帮助:
The next example collects all pairs key=value from the given string into a table:
t = {} s = "from=world, to=Lua" for k, v in string.gmatch(s, "(%w+)=(%w+)") do t[k] = v end