sa1*_*125 5 ruby regex decimal-point fractions
我正在寻找一个正则表达式从十进制数中删除尾随零.它应该返回以下结果:
0.0002300 -> 0.00023
10.002300 -> 10.0023
100.0 -> 100
1000 -> 1000
0.0 -> 0
0 -> 0
Run Code Online (Sandbox Code Playgroud)
基本上,如果小数部分为0,它应该删除尾随零和尾随小数点.当它是值时,它也应该返回0.有什么想法吗?谢谢.
试试正则表达式:
(?:(\..*[^0])0+|\.0+)$
Run Code Online (Sandbox Code Playgroud)
并替换为:
\1
Run Code Online (Sandbox Code Playgroud)
演示:
tests = ['0.0002300', '10.002300', '100.0', '1000', '0.0', '0']
tests.each { |tst|
print tst, " -> ", tst.sub(/(?:(\..*[^0])0+|\.0+)$/, '\1'), "\n"
}
Run Code Online (Sandbox Code Playgroud)
产生:
0.0002300 -> 0.00023
10.002300 -> 10.0023
100.0 -> 100
1000 -> 1000
0.0 -> 0
0 -> 0
Run Code Online (Sandbox Code Playgroud)
或者您可以简单"%g" % tst地删除尾随零:
tests = ['0.0002300', '10.002300', '100.0', '1000', '0.0', '0']
tests.each { |tst|
s = "%g" % tst
print tst, " -> ", s, "\n"
}
Run Code Online (Sandbox Code Playgroud)
它产生相同的输出.
| 归档时间: |
|
| 查看次数: |
3219 次 |
| 最近记录: |