我需要拆分一个字符串并将其存储在一个数组中.这里我使用了string.gmatch方法,并且它完全分割了字符,但我的问题是如何存储在数组中?这是我的剧本.我的示例字符串格式:touchingSpriteName = Sprite,10,rose
objProp = {}
for key, value in string.gmatch(touchedSpriteName,"%w+") do
objProp[key] = value
print ( objProp[2] )
end
Run Code Online (Sandbox Code Playgroud)
如果我打印(objProp)它给出的确切值.
表达式只返回一个值.您的单词将以键结束,值将保持为空.你应该重写循环来迭代一个项目,如下所示:
objProp = { }
touchedSpriteName = "touchedSpriteName = Sprite,10,rose"
index = 1
for value in string.gmatch(touchedSpriteName, "%w+") do
objProp[index] = value
index = index + 1
end
print(objProp[2])
Run Code Online (Sandbox Code Playgroud)
这打印Sprite(链接到ideone上的演示).
这是一个很好的函数,可以将字符串分解为数组.(参数是divider和string)
-- Source: http://lua-users.org/wiki/MakingLuaLikePhp
-- Credit: http://richard.warburton.it/
function explode(div,str)
if (div=='') then return false end
local pos,arr = 0,{}
for st,sp in function() return string.find(str,div,pos,true) end do
table.insert(arr,string.sub(str,pos,st-1))
pos = sp + 1
end
table.insert(arr,string.sub(str,pos))
return arr
end
Run Code Online (Sandbox Code Playgroud)