我正在寻找一个正则表达式来删除十进制数字的尾随零。它应返回以下结果:
0.0002300 -> 0.00023 10.002300 -> 10.0023 100.0 -> 100 1000 -> 1000 0.0 -> 0 0 -> 0
字符串基本上,如果分数部分为0,它应该删除尾随的零和尾随的小数点。当这个值是0时,它也应该返回0。有什么想法吗谢谢。
5cnsuln71#
只是另一种方式
["100.0","0.00223000"].map{|x|"%g"%x}
字符串
gev0vcfq2#
试试regex:
(?:(\..*[^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" }
型其产生:
型或者你可以简单地执行"%g" % tst来删除尾随的零:
"%g" % tst
tests = ['0.0002300', '10.002300', '100.0', '1000', '0.0', '0'] tests.each { |tst| s = "%g" % tst print tst, " -> ", s, "\n" }
型其产生相同的输出。
mzaanser3#
这里是一个更优化的正则表达式解决方案。搜索此正则表达式:
(?:(\.[0-9]*[1-9])|\.)0+$
字符串并替换为:
型RegEx Demo
RegEx详情:
(?:
(\.[0-9]*[1-9])
1-9
|
\.
)
0+
$
3条答案
按热度按时间5cnsuln71#
只是另一种方式
字符串
gev0vcfq2#
试试regex:
字符串
并将其改为:
型
演示:
型
其产生:
型
或者你可以简单地执行
"%g" % tst
来删除尾随的零:型
其产生相同的输出。
mzaanser3#
这里是一个更优化的正则表达式解决方案。
搜索此正则表达式:
字符串
并替换为:
型
RegEx Demo
RegEx详情:
(?:
:启动非捕获组(\.[0-9]*[1-9])
:匹配一个点,后跟0+个任意数字的示例,然后是一个数字1-9
。在组#1中捕获此值(用于替换反向引用\1
)|
:或\.
:匹配点)
:结束非捕获组0+
:匹配1+个零$
:结束