Here是将字符串过滤为十进制的简短示例:
String str = "a12.334tyz.78x";
str = str.replaceAll("[^\\d.]", "");
,这使12.334.78
但如何过滤第二个小数部分?我有一个字符串valued 12345.67 doll.
(注意结尾处的点)。所以我只需要12345.67
很抱歉不仅仅是评论ÓscarLópez的答案,因为声誉不足。
答案 0 :(得分:0)
答案 1 :(得分:0)
我查了一下却不确定。 Android正则表达式(如Java)可以使用
\G
断言,表示从最后一个匹配位置结束开始。
使用单个正则表达式无法解决您的问题,但可以使用
完成
两个正则表达式。
真的很简单。
两者都用于替换所有情况。
第一个只是清除你不想要的东西 用你的例子吧。
查找:"[^\\d.]+"
替换:""
第二个是:
查找:"(?:(?!\\A)\\G|(\\.))([^.]*)\\."
替换:"$1$2"
最后一个正则表达式删除了第一个后的所有点(但 NOT 是第一个) 以下是此正则表达式的细分:
(?:
(?! \A ) # Not at BOS
\G # Start at end of last match position
| # or,
( \. ) # (1), One time, The first Dot in the string
)
( [^.]* ) # (2), Optional any chars
\. # Until we find the next extra Dot to remove
输入:
a12.334tyz.78x
输出:
12.33478