Разделить строку и сохранить в массиве в lua

Мне нужно разделить строку и сохранить ее в массиве. здесь я использовал строку.метод gmatch и его разделение символов точно, но моя проблема заключается в том, как хранить в массиве ? вот мой сценарий. мой пример строкового формата: touchedSpriteName = Sprite, 10, rose

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

если я печатаю (objProp)его точные значения.

3 ответов


ваше выражение возвращает только одно значение. Ваши слова окажутся в клавишах, а значения останутся пустыми. Вы должны переписать цикл для итерации по одному элементу, например:

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


вот хорошая функция, которая взрывает строку в массив. (Аргументы 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

вот функция, которую я сделал:

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", ",")