You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Lua(CC:Tweaked)中将字符串转为table?及无中间件存表方案

解决CC:Tweaked中Lua字符串转Table及直接存Table到文件的问题

一、把读取到的字符串转成Table

你的字符串是标准的Lua Table语法格式,直接用load函数就能完成转换,代码非常简单:

local str = '{a="foo", b="bar", c=12345}'
-- 加载字符串并执行,返回对应的table
local myTable = load("return " .. str)()
-- 测试输出验证结果
print(myTable.a) -- 输出foo
print(myTable.c) -- 输出12345

注意:如果这个字符串是你自己生成的文件内容,用这个方法完全安全;如果是外部未知来源的字符串,需要警惕安全风险,但你的场景下不用顾虑。

二、直接把Table保存到文件(简化中间步骤)

本质上还是需要把Table转成可存储的字符串,但可以写个极简的序列化函数,直接将Table转成Lua格式的字符串写入文件,读取时再用上面的方法转回Table,全程不用手动处理字符串中间件。

适配简单Table的序列化函数(支持字符串、数字、布尔值)

-- 序列化简单table(仅处理字符串/数字/布尔值键值对,无嵌套table)
function serialize(tbl)
    local parts = {}
    for k, v in pairs(tbl) do
        -- 处理键的格式
        local keyStr = type(k) == "string" and (k .. "=") or ("[" .. k .. "]=")
        -- 处理值的格式
        local valStr
        if type(v) == "string" then
            valStr = '"' .. v .. '"'
        else
            valStr = tostring(v)
        end
        table.insert(parts, keyStr .. valStr)
    end
    return "{" .. table.concat(parts, ", ") .. "}"
end

-- 保存table到文件
local myTable = {a="foo", b="bar", c=12345}
local file = fs.open("my_table.txt", "w")
file.write(serialize(myTable))
file.close()

-- 从文件读取并转回table
local file = fs.open("my_table.txt", "r")
local str = file.readAll()
file.close()
local loadedTable = load("return " .. str)()

这个函数完全适配你的需求场景,没有复杂逻辑,初学者能轻松看懂和使用。

内容的提问来源于stack exchange,提问作者Larix Duk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:02:41