LUA中的数组转换为字符串
2018-6-23 2:48:30
收藏:0
阅读:235
评论:1
尝试将这个数组转换成字符串
customLog2 = {} 这个数组实际上应该是这个样子的
Log = { {Group = ID, Pos = Numbers}, {Group = ID, Pos = Numbers} }
我尝试了这个
local Data = string.format( "LogBook = %s ", customLog2 )
但是因为CustomLog是一个数组而不是字符串或数字,所以我无法插入它。我想把数组转换为字符串以便于VariableFile:write(Data)。所以如果有人能够帮助那就太棒了,谢谢。
所以我的输出应该像这样"local Data = string.format( "LogBook = %s ", customLog2 )",以便我可以使用:write,然后在我的新创建的文件中它应该像这样Log = { {Group = ID, Pos = Numbers}, {Group = ID, Pos = Numbers} }
所以这个函数可以正常工作,除了一个问题。
function TableSerialization(t, i)
local text = "{\n"
local tab = ""
for n = 1, i + 1 do --控制当前文本行的缩进
tab = tab .. "\t"
end
for k,v in pairs(t) do
if type(k) == "string" then
text = text .. tab .. "['" .. k .. "'] = "
else
text = text .. tab .. "[" .. k .. "] = "
end
if type(v) == "string" then
text = text .. "'" .. v .. "',\n"
elseif type(v) == "number" then
text = text .. v .. ",\n"
elseif type(v) == "table" then
text = text .. TableSerialization(v, i + 1)
elseif type(v) == "boolean" then
if v == true then
text = text .. "true,\n"
else
text = text .. "false,\n"
end
elseif type(v) == "function" then
text = text .. v .. ",\n"
elseif v == nil then
text = text .. "nil,\n"
end
end
tab = ""
for n = 1, i do --关闭括号的缩进比前一个文本行少一
tab = tab .. "\t"
end
if i == 0 then
text = text .. tab .. "}\n" --最后一个括号后面不应该跟着逗号
else
text = text .. tab .. "},\n" --所有缩进大于0的括号后面都跟着逗号
end
return text
end
我的输入数组看起来像这样Log = { Group = WestAPC },但这并不起作用,因为WestAPC不是一个字符串,但如果WestAPC像这样 "WestAPC",那么它就可以工作。我需要它不是字符串形式。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

清楚地说,customLog 是一个表 - 即一种键值对数组。以下是一个遍历所有键值对并将它们连接成一个字符串的简单方法:
s = "" t = {"a", "b", "c", 123, 456, 789} -- 样例表 t.someKey = "some value" -- 只是一个额外的键值对,以展示键也可以是字符串 for k, v in pairs(t) do s = s .. k .. ":" .. v .. "\n" -- 将键值对连接起来,中间用换行符隔开 end print(s)当然,如果键的值是另一个表 {},则需要一些额外的逻辑来递归遍历这些嵌套的表。我会留给你作为练习 :)
EDIT 1: 将表格打印为字符串,显示变量的值
s = "" local ID = 123 local Numbers = 456 local Log = { {Group = ID, Pos = Numbers}, {Group = ID, Pos = Numbers} } s = s .. "{" for k, v in next, Log do s = s .. "{" for vk, vv in next, v do if next(v, vk) ~= nil then s = s .. vk .. " = " .. vv .. ", " else s = s .. vk .. " = " .. vv end end if next(Log, k) ~= nil then s = s .. "}, " else s = s .. "}" end end s = s .. "}" print(s)EDIT 2: 将表格打印为字符串,显示变量名
s = "" local ID = 123 local Numbers = 456 local Log = { {Group = ID, Pos = Numbers}, {Group = ID, Pos = Numbers} } s = s .. "{" for k, v in next, Log do s = s .. "{" i = 1 for vk, vv in next, v do name = debug.getlocal(1, i) if next(v, vk) ~= nil then s = s .. vk .. " = " .. name .. ", " else s = s .. vk .. " = " .. name end i = i + 1 end if next(Log, k) ~= nil then s = s .. "}, " else s = s .. "}" end end s = s .. "}" print(s)