【发布时间】:2014-09-02 02:03:53
【问题描述】:
使用 Lua,我将数字格式化为可变位数并去除尾随零/小数点,例如
string.format(" %."..precision.."f", value):
gsub("(%..-)0*$", "%1"):
gsub("%.$", "")
值是数字类型(正数、负数、整数、小数)。
所以任务解决了,但出于审美、教育和性能方面的原因,我有兴趣了解是否有更优雅的方法 - 可能只使用一个 gsub()。
string.format() 中的%g 是不可选择的,因为要避免使用科学记数法。
【问题讨论】:
-
value是否有一些限制? -
嗯,它是某种数字,正数或负数,整数或小数。
-
我会将第 2 行更改为
:gsub("(%.%d-)0+$", "%1")。如果没有零,它会跳过替换,并将点后的字符限制为数字(允许输入字符串更灵活)。此外,以冒号开头是链接命令的传统方式(一方面,它可以让您注释掉链末尾的一行而不会出现语法错误)。 -
@StuartP.Bentley 我认为它不适用于下一行的冒号,但你是对的,它确实如此!我在交互式 Lua 中尝试过,但没有。
-
请记住,Lua REPL 会尽快执行语句,而您不能继续执行已经解释过的语句。
标签: lua string-formatting