为什么replaceAll()会删除多余的字符

时间:2019-04-16 05:41:53

标签: java regex

我正在使用replaceAll()从给定的String中删除所有的“ 00”。尽管它删除了所有的00,但它也删除了前面的字符。

String a = "2400.00";
String a1 = a.replaceAll(".00", "");

我希望o / p为24,但得到2。

3 个答案:

答案 0 :(得分:4)

.表示正则表达式中的任何字符。 replaceAll使用正则表达式作为粗体。请逃脱。 a.replaceAll("\\.00", "");

或者只是使用replace(".00", "")

答案 1 :(得分:2)

replaceAll将正则表达式作为第一个参数。在正则表达式中,语法.(点)表示任何字符,因此表示结果。

要么用\\转义该点,要么使用replace而不是replaceAll(替换仍然替换所有出现的内容,但是参数是要替换的“模式”,而不是正则表达式)

答案 2 :(得分:0)

这是因为.与正则表达式中的任何字符都匹配(很好,除了换行符,但是可以使用适当的标志进行更改)。

这就是为什么它与400以及.00匹配并替换它的原因。

您需要替换00.00,因此需要模式:\.?00

说明:

\.?-匹配.零次或一次

00-从字面上匹配00

Demo

代码:

String a = "2400.00";
String a1 = a.replaceAll("\\.?00", "");
System.out.println(a1);