我正在使用replaceAll()从给定的String中删除所有的“ 00”。尽管它删除了所有的00,但它也删除了前面的字符。
String a = "2400.00";
String a1 = a.replaceAll(".00", "");
我希望o / p为24,但得到2。
答案 0 :(得分:4)
.
表示正则表达式中的任何字符。 replaceAll
使用正则表达式作为粗体。请逃脱。 a.replaceAll("\\.00", "");
或者只是使用replace(".00", "")
。
答案 1 :(得分:2)
replaceAll
将正则表达式作为第一个参数。在正则表达式中,语法.
(点)表示任何字符,因此表示结果。
要么用\\
转义该点,要么使用replace
而不是replaceAll
(替换仍然替换所有出现的内容,但是参数是要替换的“模式”,而不是正则表达式)
答案 2 :(得分:0)
这是因为.
与正则表达式中的任何字符都匹配(很好,除了换行符,但是可以使用适当的标志进行更改)。
这就是为什么它与400
以及.00
匹配并替换它的原因。
您需要替换00
或.00
,因此需要模式:\.?00
说明:
\.?
-匹配.
零次或一次
00
-从字面上匹配00
代码:
String a = "2400.00";
String a1 = a.replaceAll("\\.?00", "");
System.out.println(a1);