Разделить строку и сохранить в массиве в 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", ",")