lua - 如何使用字符串初始化表格
2016-4-5 15:42:16
收藏:0
阅读:88
评论:3
我有如下字符串:
mystring ="a=test;b=12345"
我想知道如何一次性初始化表格并将其赋值为该字符串的值。该字符串源自另一个外部应用程序,如果可能,我想避免将其拆分。类似这样的东西:
mytable = {mystring:gsub(";",",")}
是否可以这样做?我知道如何分步骤完成...但只是想知道能否一次性完成。
这是我尝试过的内容和相应的输出:
> mystring ="a=123;b=2345"
> myarray = {mystring:gsub(";",",")}
> for key,value in pairs(myarray) do print(key,value) end
1 a=123,b=2345
2 1
>
而我希望结束时得到像这样的数组/表:
key value
a 123
b 2345
点赞
用户107090
尝试使用以下代码,让 Lua 完成繁重的工作:
function parse(s)
local t={}
load(s,"",nil,t)()
return t
end
mytable=parse("a=123;b=2345")
for k,v in pairs(mytable) do print(k,v) end
请注意,这会执行给定字符串中的代码,如果来自不可信源,则可能会造成安全风险。另一方面,由于代码在空环境中执行,因此不能影响现有的变量,因此造成的损害是有限的。但是,恶意代码可能包含无限循环或消耗所有内存。
2016-04-05 17:39:26
用户1847592
-- 需要 Lua 5.2 以上版本 function string_to_table (str) local result = {} load(str, '', 't', setmetatable({}, { __index = function(t,k) return k end, __newindex = result }))() return result end
mytable = string_to_table("a=test;b=12345;c=a") -- {a="test", b=12345, c="a"}
2016-04-05 17:41:27
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
mytable = {} for key, value in string.gmatch("a=123;b=456", "(%w+)=(%w+)") do mytable[key] = value end print(mytable.a, mytable.b)输出结果:
123
456
和预期一样。当然,这仅适用于字母数字和无标点符号的情况。