在 Lua 中打印 table
Print table in Lua
我在 Lua 中有一个脚本,我需要打印变量 res,但我不知道如何打印。我在另一个函数中得到了函数的结果,我想在那里做 print
function parseCSVLine(line)
local res = {}
local pos = 1
local sep = ','
while true do
local c = string.sub(line,pos,pos)
if (c == "") then break end
if (c == '"') then
-- quoted value (ignore separator within)
local txt = ""
repeat
local startp,endp = string.find(line,'^%b""',pos) -- Digitos
txt = txt..string.sub(line,startp+1,endp-1)
pos = endp + 1
c = string.sub(line,pos,pos)
if (c == '"') then txt = txt..'"' end
-- check first char AFTER quoted string, if it is another
-- quoted string without separator, then append it
-- this is the way to "escape" the quote char in a quote. example:
-- value1,"blub""blip""boing",value3 will result in blub"blip"boing for the middle
until (c ~= '"')
table.insert(res,txt)
-- assert(c == sep or c == "")
pos = pos + 1
else
-- no quotes used, just look for the first separator
local startp,endp = string.find(line,sep,pos)
if (startp) then
table.insert(res,string.sub(line,pos,startp-1))
pos = endp + 1
else
-- no separator found -> use rest of string and terminate
table.insert(res,string.sub(line,pos))
break
end
end
end
return res
end
例子
local result = parseCSVLine(line)
这里我想打印结果
res
in parseCSVLine
似乎是作为列表创建的。所以试试这个:
for i,v in ipairs(result) do print(i,v) end
我在 Lua 中有一个脚本,我需要打印变量 res,但我不知道如何打印。我在另一个函数中得到了函数的结果,我想在那里做 print
function parseCSVLine(line)
local res = {}
local pos = 1
local sep = ','
while true do
local c = string.sub(line,pos,pos)
if (c == "") then break end
if (c == '"') then
-- quoted value (ignore separator within)
local txt = ""
repeat
local startp,endp = string.find(line,'^%b""',pos) -- Digitos
txt = txt..string.sub(line,startp+1,endp-1)
pos = endp + 1
c = string.sub(line,pos,pos)
if (c == '"') then txt = txt..'"' end
-- check first char AFTER quoted string, if it is another
-- quoted string without separator, then append it
-- this is the way to "escape" the quote char in a quote. example:
-- value1,"blub""blip""boing",value3 will result in blub"blip"boing for the middle
until (c ~= '"')
table.insert(res,txt)
-- assert(c == sep or c == "")
pos = pos + 1
else
-- no quotes used, just look for the first separator
local startp,endp = string.find(line,sep,pos)
if (startp) then
table.insert(res,string.sub(line,pos,startp-1))
pos = endp + 1
else
-- no separator found -> use rest of string and terminate
table.insert(res,string.sub(line,pos))
break
end
end
end
return res
end
例子
local result = parseCSVLine(line)
这里我想打印结果
res
in parseCSVLine
似乎是作为列表创建的。所以试试这个:
for i,v in ipairs(result) do print(i,v) end