在Lua中将长号格式化为短版本

Wal*_*boy 1 regex lua lua-patterns

我试图弄清楚如何通过使用Lua附加'k'或'm'将大量数字格式化为较短的版本。例:

17478    => 17.5k
2832     => 2.8k
1548034  => 1.55m
Run Code Online (Sandbox Code Playgroud)

我想在那里以及根据示例进行四舍五入。我对Regex不太好,所以我不确定从哪里开始。任何帮助,将不胜感激。谢谢。

Yu *_*Hao 5

模式匹配似乎不是解决此问题的正确方向。

假设小数点后两位保留在较短的版本中,请尝试:

function foo(n)
    if n >= 10^6 then
        return string.format("%.2fm", n / 10^6)
    elseif n >= 10^3 then
        return string.format("%.2fk", n / 10^3)
    else
        return tostring(n)
    end
end
Run Code Online (Sandbox Code Playgroud)

测试:

print(foo(17478))
print(foo(2832))
print(foo(1548034))
Run Code Online (Sandbox Code Playgroud)

输出:

17.48k
2.83k
1.55m
Run Code Online (Sandbox Code Playgroud)