7

我需要拆分一个字符串并将其存储在一个数组中。在这里我使用了 string.gmatch 方法,它精确地分割了字符,但我的问题是如何存储在数组中?这是我的脚本。我的示例字符串格式:touchedSpriteName = Sprite,10,rose

objProp = {}
for key, value in string.gmatch(touchedSpriteName,"%w+") do 
objProp[key] = value
print ( objProp[2] )
end

如果我 print(objProp) 它给出了准确的值。

4

3 回答 3

5

您的表达式只返回一个值。您的文字将以键结尾,而值将保持为空。您应该重写循环以迭代一个项目,如下所示:

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])

这会打印Sprite(ideone 上的演示链接)。

于 2012-10-03T13:19:56.950 回答
5

这是一个很好的函数,可以将字符串分解为数组。(参数是dividerstring

-- 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
于 2012-10-04T08:32:34.577 回答
0

这是我制作的一个功能:

function split(str, character)
  result = {}

  index = 1
  for s in string.gmatch(str, "[^"..character.."]+") do
    result[index] = s
    index = index + 1
  end

  return result
end

你可以称之为:

split("dog,cat,rat", ",")
于 2018-05-21T04:57:55.587 回答