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

如何将Lua中存储字符串数字的Table转换为整数型Table

Lua 字符串数字表转整数表实现方案

基础结论

Lua 标准库没有内置专门用于批量转换表内字符串数字为整数的函数,你已知的tonumber+循环的方案已经是性能最优、可读性最好的实现方式,没有必要额外引入第三方依赖。

最优实现代码

原地修改版本(无额外内存开销,适合处理大表)

local input = {"1", "2", "3"}
for i = 1, #input do
    -- 确保输出为整数类型,可过滤非整数格式的输入
    input[i] = math.tointeger(tonumber(input[i]))
end
-- 执行后 input 即为 {1, 2, 3}

补充说明:如果你使用的是 Lua 5.2 及更早版本,没有math.tointeger函数,直接使用tonumber即可,Lua 老版本没有单独的整数类型,所有数字统一为 number 类型。如果你的输入可以保证全为合法整数格式字符串,也可以省略math.tointeger包裹。

生成新表版本(不修改原始输入表)

local input = {"1", "2", "3"}
local output = {}
for i, v in ipairs(input) do
    output[i] = math.tointeger(tonumber(v))
end

可选工具封装

如果你需要频繁使用该转换能力,可以封装为通用工具函数:

function table.map_to_int(t, fallback)
    local res = {}
    fallback = fallback or 0 -- 转换失败的默认值,可自定义
    for i, v in ipairs(t) do
        local num = tonumber(v)
        res[i] = num and (math.tointeger(num) or num) or fallback
    end
    return res
end

-- 调用示例
local input = {"1", "2", "3"}
local output = table.map_to_int(input)

不推荐的写法

不要为了追求「一行实现」使用table.concat拼接后加载执行的写法,这类写法性能远低于普通循环,可读性极差,且存在注入风险。

内容的提问来源于stack exchange,提问作者Klemen Vrhovec

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:24:05