Ruby Regex用于舍入尾随零

我正在寻找一个正则表达式从十进制数中删除尾随零。 它应该返回以下结果:

0.0002300 -> 0.00023 10.002300 -> 10.0023 100.0 -> 100 1000 -> 1000 0.0 -> 0 0 -> 0 

基本上,如果小数部分为0,它应该删除尾随零和尾随小数点。当值为0时,它也应该返回0。 有什么想法吗? 谢谢。

试试正则表达式:

 (?:(\..*[^0])0+|\.0+)$ 

并替换为:

 \1 

一个演示:

 tests = ['0.0002300', '10.002300', '100.0', '1000', '0.0', '0'] tests.each { |tst| print tst, " -> ", tst.sub(/(?:(\..*[^0])0+|\.0+)$/, '\1'), "\n" } 

产生:

 0.0002300 -> 0.00023 10.002300 -> 10.0023 100.0 -> 100 1000 -> 1000 0.0 -> 0 0 -> 0 

或者您只需执行"%g" % tst即可删除尾随零:

 tests = ['0.0002300', '10.002300', '100.0', '1000', '0.0', '0'] tests.each { |tst| s = "%g" % tst print tst, " -> ", s, "\n" } 

它产生相同的输出。

只是另一种方式

 ["100.0","0.00223000"].map{|x|"%g"%x}