Lua разделя низ в 2d масив в една стъпка

Имам следния низ

abc=1.2;bcd=2.4;xyz=10.9

Искам да го разделя в следната таблица

{ {"abc", "1.2}, {"bcd", "2.4"}, {"xyz", "10.9"} }

В момента правя това, като разделям низовете първо с ; и след това с =.

В PHP мога да използвам следния шаблон preg_match, за да направя това в една стъпка без итерация. Възможно ли е да се направи това в Lua?

preg_match_all("/(?:([a-z]+)=([0-9.]+)(?:;|$))/", $a, $match, PREG_SET_ORDER);

person Joyce Babu    schedule 05.03.2015    source източник


Отговори (1)


Опитайте тази:

s="abc=1.2;bcd=2.4;xyz=10.9"

s=s..";"
t={}
for k,v in s:gmatch("(.-)=(.-);") do
    t[#t+1]={k,v}
end
person lhf    schedule 05.03.2015
comment
Благодаря ти. Това е много по-добро от настоящото ми решение. - person Joyce Babu; 05.03.2015
comment
В момента използвам table.insert(t, {k, v}). t[#t+1]={k,v} предпочита ли се пред table.insert? - person Joyce Babu; 05.03.2015
comment
@JoyceBabu, table.insert е добре. - person lhf; 05.03.2015