我正在使用 LUA 在表中创建表,但遇到了问题。我还需要填充出现的 NIL 值,但似乎无法正确处理。
被操纵的字符串:
PatID = '07-26-27~L73F11341687Per^^^SCI^SP~N7N558300000Acc^'
for word in PatID:gmatch("[^\~w]+") do table.insert(PatIDTable,word) end
local _, PatIDCount = string.gsub(PatID,"~","")
PatIDTableB = {}
for i=1, PatIDCount+1 do
PatIDTableB[i] = {}
end
for j=1, #PatIDTable do
for word in PatIDTable[j]:gmatch("[^\^]+") do
table.insert(PatIDTableB[j], word)
end
end
这当前产生此输出:
table
[1]=table
[1]='07-26-27'
[2]=table
[1]='L73F11341687Per'
[2]='SCI'
[3]='SP'
[3]=table
[1]='N7N558300000Acc'
但我需要它来生产:
table
[1]=table
[1]='07-26-27'
[2]=table
[1]='L73F11341687Per'
[2]=''
[3]=''
[4]='SCI'
[5]='SP'
[3]=table
[1]='N7N558300000Acc'
[2]=''
编辑:我想我可能在解释我在寻找什么方面做得不好。我不一定希望将 karats 视为“NIL”或“空”,而是它们表示要开始一个新字符串。
由于缺乏更好的解释,我猜它们是位置标识符。
因此,例如:
L73F11341687Per^^^SCI^SP
实际上翻译为:
1. L73F11341687Per
2.
3.
4. SCI
5. SP
如果我有
L73F11341687Per^12ABC^^SCI^SP
那么职位是:
1. L73F11341687Per
2. 12ABC
3.
4. SCI
5. SP
反过来,表格将是:
table
[1]=table
[1]='07-26-27'
[2]=table
[1]='L73F11341687Per'
[2]='12ABC'
[3]=''
[4]='SCI'
[5]='SP'
[3]=table
[1]='N7N558300000Acc'
[2]=''
希望这对我正在尝试做的事情有更多的了解。