0

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]=''

編集:探しているものを説明するのが悪い仕事をしたと思います。カラットが「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]=''

うまくいけば、これは私がやろうとしていることをもう少し明らかにします。

4

2 に答える 2