如何将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
相关产品推荐
相关产品推荐

