【问题标题】:Substitute character for integer用字符替换整数
【发布时间】:2021-06-08 16:47:49
【问题描述】:

我正在做一个项目,我需要找到从字符“K”“M”或“B”替换的整数值。 我正在尝试为用户找到输入诸如“1k”“12k”“100k”之类的字符串并以适当的方式接收返回值的最佳方式。比如用户输入“12k”,我会收到“12000”。

我是 Lua 新手,对字符串模式不太擅长。

if (string.match(text, 'k')) then
  print(text)
  local test = string.match(text, '%d+')
  print(test)
end 

【问题讨论】:

    标签: lua


    【解决方案1】:
    local text = "1k"
    print(tonumber((text:lower():gsub("[kmb]", {k="e3"}))))
    

    我不知道您对 M 和 B 使用什么因素。那应该是什么?亿万?

    我建议你使用国际标准。公斤 (k)、兆 (M)、千兆 (G)。

    然后它看起来像这样:

     local text = "1k"
     print(tonumber((text:gsub("[mkMG]", {m = "e-3", k="e3", M="e6", G="e9"}))))  --and so on
    

    【讨论】:

      【解决方案2】:

      您可以将模式匹配为(%d+)([kmb]) 之类的东西,以分别获取数字和后缀。然后只需tonumber 第一部分并将后者映射到一个因子(例如,使用表格)并将其与您的结果相乘。

      local factors = { k=1e3, m=1e6, --[and so on]] }
      local num, suffix = string.match(text, '(%d+)([kmb])')
      local result = tonumber(num) * factors[suffix]
      

      【讨论】:

        猜你喜欢
        • 2017-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-27
        • 1970-01-01
        • 2021-09-07
        • 1970-01-01
        相关资源
        最近更新 更多