Ruby Regex 舍入尾随零
我正在寻找一个正则表达式来删除十进制数字中的尾随零。它应该返回以下结果:
0.0002300 -> 0.00023
10.002300 -> 10.0023
100.0 -> 100
1000 -> 1000
0.0 -> 0
0 -> 0
基本上,如果小数部分为 0,它应该删除尾随零和尾随小数点。当这是该值时,它也应该返回 0。有什么想法吗?谢谢。
I'm looking for a regex to remove trailing zeros from decimal numbers. It should return the following results:
0.0002300 -> 0.00023
10.002300 -> 10.0023
100.0 -> 100
1000 -> 1000
0.0 -> 0
0 -> 0
Basically, it should remove trailing zeros and trailing decimal point if the fraction part is 0. It should also return 0 when that's the value. Any thoughts? thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
只是另一种方式
just another way
尝试使用 regex:
并将其替换为:
A demo: ,
它会产生:
或者您可以简单地执行
"%g" % tst
来删除尾随零:,这会产生相同的输出。
Try the regex:
and replace it with:
A demo:
which produces:
Or you could simply do
"%g" % tst
to drop the trailing zeros:which produces the same output.
这是更优化的正则表达式解决方案。
搜索此正则表达式:
并替换为:
正则表达式演示
正则表达式详细信息:
(?:
: 启动非捕获组(\.[0-9]*[1-9])
:匹配一个点,后跟 0 多个任意数字,然后是一个数字1-9
。在组 #1 中捕获此值(用于替换反向引用\1
)\.
:匹配点0+
:匹配 1+ 个零$
:结束Here is bit more optimized regex solution.
Search for this regex:
and replace with:
RegEx Demo
RegEx Details:
(?:
: Start non-capture group(\.[0-9]*[1-9])
: Match a dot followed by 0+ instances of any digit and then a digit1-9
. Capture this value in group #1 (to be used in replacement back-reference\1
)|
: OR\.
: Match a dot)
: End non-capture group0+
: Match 1+ of zeroes$
: End