微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将字符串转换为表格?

如何解决如何将字符串转换为表格?

我一直在尝试将字符串转换为表格,例如:

local stringtable = "{{"user123","Banned for cheating"},{"user124","Banned for making alt accounts"}}"

代码

local table = "{{"user123","Banned for making alt accounts"}}"

print(table[1])

输出结果:

Line 3: nil

有没有什么方法可以将字符串转换成表格?如果是这样,请告诉我。

解决方法

首先,您的 Lua 代码将无法运行。在由双引号分隔的字符串中不能有未转义的双引号。在 ' 字符串中使用单引号("),在 " 中使用 '...' 或使用 heredoc 语法来能够使用这两种类型的引号,正如我在下面的例子。

其次,你的任务不能用正则表达式解决,除非你的表结构很死板;即便如此,Lua 模式也不够:您需要使用 Lua lrexlib 库中与 Perl 兼容的正则表达式。

第三,幸运的是,Lua 有一个运行时可用的 Lua 解释器:函数 loadstring。它返回一个在其参数字符串中执行 Lua 代码的函数。您只需要将 return 添加到您的表代码并调用返回的函数。

代码:

local stringtable = [===[
{{"user123","Banned for cheating"},{"user124","Banned for making alt accounts"}}
]===]

local tbl_func = loadstring ('return ' .. stringtable)
-- If stringtable is not valid Lua code,tbl_func will be nil:
local tbl = tbl_func and tbl_func() or nil

-- Test:
if tbl then
    for _,user in ipairs (tbl) do
        print (user[1] .. ': ' .. user[2])
    end
else
    print 'Could not compile stringtable'
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。