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

Lua如何将带K/M/B后缀的字符串转换为对应整数值

带K/M/B后缀字符串转整数值 Lua 实现方案

完整实现代码

local function parse_unit_str(input)
    -- 定义后缀对应的倍率
    local unit_map = {
        k = 1000,
        m = 1000000,
        b = 1000000000
    }
    -- 统一转小写处理,兼容大写后缀输入
    local lower_input = input:lower()
    -- 同时匹配数字部分(支持小数)和单位后缀
    local num_str, unit = lower_input:match('^([%d%.]+)([kmb])$')
    if num_str and unit then
        local num = tonumber(num_str)
        -- 若需要返回字符串类型结果,直接用tostring包裹计算结果即可
        return num * unit_map[unit]
    end
    -- 无后缀的合法数字直接返回对应数值
    return tonumber(input)
end

代码说明

  • 用映射表统一管理单位倍率,后续需要扩展其他单位仅需修改unit_map即可
  • 匹配模式^([%d%.]+)([kmb])$同时提取数值部分和后缀,自动过滤不符合格式的输入,避免误转换
  • 输入提前转小写处理,天然兼容大写后缀输入,比如12K/1.5M/3B都可以正常识别
  • 支持带小数的输入,比如1.5k会正确转换为1500
  • 无后缀的合法数字字符串会直接返回对应数值,兼容普通数字输入场景

原有代码问题说明

  • 仅匹配了小写k,不支持M/B单位和大写后缀
  • 只提取了整数部分,带小数的输入会被截断,比如1.5k只会提取到数字1
  • 没有做倍率计算,仅提取了原始数字部分,未完成最终的转换逻辑

测试示例

print(parse_unit_str("12k")) -- 输出 12000
print(parse_unit_str("1.5M")) -- 输出 1500000
print(parse_unit_str("2B")) -- 输出 2000000000
print(parse_unit_str("999")) -- 输出 999

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 06:45:10