在Lua中将字符串转换为数组

在Lua中将字符串转换为数组,lua,luajit,Lua,Luajit,为什么这种语法有效: 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(stri

为什么这种语法有效:

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表中指定多个值

要将简单的a=1、b=1、c=1类型字符串解析到表中,手册中的第二个示例很有帮助:

下一个示例将给定字符串中的所有对key=value收集到一个表中:

t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
  t[k] = v
end
这条线

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表中指定多个值

要将简单的a=1、b=1、c=1类型字符串解析到表中,手册中的第二个示例很有帮助:

下一个示例将给定字符串中的所有对key=value收集到一个表中:

t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
  t[k] = v
end

注:两个样品一般不相等;第二个示例将string.sub的结果截断为一个值,而第一个示例将在数组中存储所有返回值。@ColonelThirtyTwo,而true string.sub只返回一个值。注意:这两个示例通常不相等;第二个示例将string.sub的结果截断为一个值,而第一个示例将在数组中存储所有返回值。@ColonelThirtyTwo,而true string.sub只返回一个值。请不要破坏您的帖子。通过在Stack Exchange网络上发布,您已经为SE授予了一项不可撤销的权利,可以在下发布该内容。根据SE政策,任何故意破坏行为都将恢复原状。如果你想把这篇文章从你的帐户中分离出来,正如已经提到的,你不允许用废话代替你的旧问题来破坏你的旧问题。如果这样做会使现有答案无效,你也不允许完全改变你的问题。由于您不会停止此操作,此问题已被锁定以防止进一步编辑。请不要破坏您的帖子。通过在Stack Exchange网络上发布,您已经为SE授予了一项不可撤销的权利,可以在下发布该内容。根据SE政策,任何故意破坏行为都将恢复原状。如果你想把这篇文章从你的帐户中分离出来,正如已经提到的,你不允许用废话代替你的旧问题来破坏你的旧问题。如果这样做会使现有答案无效,你也不允许完全改变你的问题。由于您不会停止此操作,因此已锁定此问题以防止进一步编辑。