我有一个字符串,包含一个表如何将其转换为表?

时间:2015-11-28 23:30:01

标签: string lua lua-table

我的字符串是

 {{{X=-1,Y =-1,Z =1}{X=0,Y =-1,Z =1}{X=1,Y =-1,Z =1}}{{X=-1,Y =0,Z =1}{X=0,Y =0,Z =1}{X=1,Y =0,Z =1}}{{X=-1,Y =1,Z =1}{X=0,Y =1,Z =1}{X=1,Y =1,Z =1}}{{X=-1,Y =2,Z =1}{X=0,Y =2,Z =1}{X=1,Y =2,Z =1}}}{{{X=1,Y =-1,Z=-1}{X=1,Y =-1,Z=0}{X=1,Y =-1,Z=1}}{{X=1,Y =0,Z=-1}{X=1,Y =0,Z=0}{X=1,Y =0,Z=1}}{{X=1,Y =1,Z=-1}{X=1,Y =1,Z=0}{X=1,Y =1,Z=1}}{{X=1,Y =2,Z=-1}{X=1,Y =2,Z=0}{X=1,Y =2,Z=1}}}{{{X=-1,Y =-1,Z = -1}{X=0,Y =-1,Z = -1}{X=1,Y =-1,Z = -1}}{{X=-1,Y =0,Z = -1}{X=0,Y =0,Z = -1}{X=1,Y =0,Z = -1}}{{X=-1,Y =1,Z = -1}{X=0,Y =1,Z = -1}{X=1,Y =1,Z = -1}}{{X=-1,Y =2,Z = -1}{X=0,Y =2,Z = -1}{X=1,Y =2,Z = -1}}}{{{X=-1,Y=-1,Z=-1}{X=-1,Y=-1,Z=0}{X=-1,Y=-1,Z=1}}{{X=-1,Y=0,Z=-1}{X=-1,Y=0,Z=0}{X=-1,Y=0,Z=1}}{{X=-1,Y=1,Z=-1}{X=-1,Y=1,Z=0}{X=-1,Y=1,Z=1}}{{X=-1,Y=2,Z=-1}{X=-1,Y=2,Z=0}{X=-1,Y=2,Z=1}}}

我需要它像这样的表

{
 {
  { X = -1, Y = -1 , Z = 1  }
  { X = 0, Y = -1 , Z = 1  }
  { X = 1, Y = -1 , Z = 1  }
 }
 {
  { X = -1, Y = 0 , Z = 1  }
  { X = 0, Y = 0 , Z = 1  }
  { X = 1, Y = 0 , Z = 1  }
 }
 {
  { X = -1, Y = 1 , Z = 1  }
  { X = 0, Y = 1 , Z = 1  }
  { X = 1, Y = 1 , Z = 1  }
 }
 {
  { X = -1, Y = 2 , Z = 1  }
  { X = 0, Y = 2 , Z = 1  }
  { X = 1, Y = 2 , Z = 1  }
 }
}
{
 {
  { X = 1, Y = -1 , Z = -1  }
  { X = 1, Y = -1 , Z = 0  }
  { X = 1, Y = -1 , Z = 1  }
 }
 {
  { X = 1, Y = 0 , Z = -1  }
  { X = 1, Y = 0 , Z = 0  }
  { X = 1, Y = 0 , Z = 1  }
 }
 {
  { X = 1, Y = 1 , Z = -1  }
  { X = 1, Y = 1 , Z = 0  }
  { X = 1, Y = 1 , Z = 1  }
 }
 {
  { X = 1, Y = 2 , Z = -1  }
  { X = 1, Y = 2 , Z = 0  }
  { X = 1, Y = 2 , Z = 1  }
 }
}
{
 {
  { X = -1, Y = -1 , Z = -1}
  { X = 0, Y = -1 , Z = -1}
  { X = 1, Y = -1 , Z = -1}
 }
 {
  { X = -1, Y = 0 , Z = -1}
  { X = 0, Y = 0 , Z = -1}
  { X = 1, Y = 0 , Z = -1}
 }
 {
  { X = -1, Y = 1 , Z = -1}
  { X = 0, Y = 1 , Z = -1}
  { X = 1, Y = 1 , Z = -1}
 }
 {
  { X = -1, Y = 2 , Z = -1}
  { X = 0, Y = 2 , Z = -1}
  { X = 1, Y = 2 , Z = -1}
 }
}
{
 {
  { X = -1, Y = -1 , Z = -1  }
  { X = -1, Y = -1 , Z = 0  }
  { X = -1, Y = -1 , Z = 1  }
 }
 {
  { X = -1, Y = 0 , Z = -1  }
  { X = -1, Y = 0 , Z = 0  }
  { X = -1, Y = 0 , Z = 1  }
 }
 {
  { X = -1, Y = 1 , Z = -1  }
  { X = -1, Y = 1 , Z = 0  }
  { X = -1, Y = 1 , Z = 1  }
 }
 {
  { X = -1, Y = 2 , Z = -1  }
  { X = -1, Y = 2 , Z = 0  }
  { X = -1, Y = 2 , Z = 1  }
 }
}

我会采取什么方法或如何做到这一点?我会在表生成期间执行它(在表中添加表但是我的代码似乎错误地将它放在表中。所以代码生成一个包含正确表的字符串,我需要知道如何放置那些sting把桌子放到桌子上......

2 个答案:

答案 0 :(得分:3)

好吧,你可以手动解析它。但是,我不会为你做到这一点。

然而,我会给你一个临时解决方案。 (这是一个非常糟糕的,但在你做一个解析器之前它已经足够了)

local tab = load("return "..you_table_string)()

注意:在Lua 5.1及其下loadstring

将字符串中的代码编译成函数,但这样做通常不赞成。

答案 1 :(得分:-2)

local Xmin = -1
local Xmax = 1
local Ymin = -1
local Ymax = 2
local Zmin = 1
local Zmax = 1
local BoxControl = 3
tbmroad.offsets = {}
local a = 0
local b = 0
local c = 0
local d = 0
local e = {}
local f = {}
local g = {}
local h = {}
local i = {}
local j = {}
local k = {}
local offsets = {}

local index = 0
for a = 0, BoxControl do 
for b = Zmin, Zmax do
   for c = Ymin, Ymax do
     for d = Xmin, Xmax do
       if a == 0 then
         e[d+1] = {X = d, Y = c , Z = b}
       elseif a == 1 then
         e[d+1] = { X = b, Y = c , Z = d  }
       elseif a == 2 then
     b1= b * -1
         e[d+1] = { X = d, Y = c , Z = b1}
       elseif a == 3 then
     b1 = b * -1
         e[d+1] = { X = b1, Y = c , Z = d}
       end   
     end
    f[c+1] = e
   end
   offsets[#offsets+1] = f
 end
end

完成并完成