这些案件的正则表达式是什么:
29000.12345678900 ,预期结果 29000.123456789
29000.000 ,预期结果 29000
29000.00003400 ,预期结果 29000.000034
简而言之,如果在十进制后面再次找不到1-9,我想消除0点,我还想消除点(。),如果实际上这个数字可以被认为是整数。
我使用这个正则表达式
(?:.0*$|0*$)
但它给了我这个结果:
来自 29123.6400 的29123.6 ,4从那里消失。
当我单独测试正则表达式时,它完美运行,
.0*$
从 29123.0000
0*$
从 29123.642300
我是否遗漏了合并正则表达式的内容?
答案 0 :(得分:3)
如果你认为正则表达式是最好的方法,你可以使用这样的东西:
\.?0+$
适用于两种情况:
> '12300000.000001130000000'.replace(/\.?0+$/g, '')
"12300000.00000113"
> '12300000.000000000000'.replace(/\.?0+$/g, '')
"12300000"
答案 1 :(得分:3)
您可以使用此正则表达式
^\d+(\.\d*[1-9])?
- -------------
| |->this would match only if the digits after . end with [1-9]
|
|->^ depicts the start of the string..it is necessary to match the pattern
解决了您的问题
试试here
答案 2 :(得分:0)
你只想要这个:
^\d*(\.?\d*[1-9])?
^\d*
表示第一组之前的一个或多个数字。()
中。\.?
表示单个DOT (.)
可以在那里但是可选。 eg. (.)
\d*
可以有一个或多个数字。 eg. (1234)
\.?\d*
可以有一个DOT和一个或多个数字eg. (.123)
[1-9]
这仅包括1到9之间的数字,仅排除0
。 eg. (2344)
答案 3 :(得分:0)
我不知道Objective-C是否支持类似下面的构造,但在Python中你可以使用str.rstrip()
完全没有正则表达式:
In [1]: def shorten_number(number):
...: return number.rstrip('0').rstrip('.')
In [2]: shorten_number('29000.12345678900')
Out[2]: '29000.123456789'
In [3]: shorten_number('29000.000')
Out[3]: '29000'