使用replaceAll替换数字中的字符在java中不起作用

使用replaceAll替换数字中的字符在java中不起作用,java,string,replace,Java,String,Replace,我想替换显示价格值的所有字符和特殊字符 但在一种情况下,Rs.1200.20返回值.1200.00 我想从一开始就避免这种情况。 我希望输出像1200.00而不是.1200.00 我该怎么做 假设您的所有价格均为xxxx.yyy格式,其中x和y为数字,您可以使用以下代码: item.setPrice(e.text().replaceAll("[^\\d\\.]", "")); 不处理所有情况(例如“1.2.3”、“hello1.2world3.4”等);它只会尝试在输入字符串中查找第一个有效的

我想替换显示价格值的所有字符和特殊字符

但在一种情况下,
Rs.1200.20
返回值
.1200.00

我想从一开始就避免这种情况。 我希望输出像1200.00而不是.1200.00
我该怎么做

假设您的所有价格均为
xxxx.yyy
格式,其中
x
y
为数字,您可以使用以下代码:

item.setPrice(e.text().replaceAll("[^\\d\\.]", ""));

不处理所有情况(例如“1.2.3”、“hello1.2world3.4”等);它只会尝试在输入字符串中查找第一个有效的价格。

您可以使用
“[^\\d]+[.]]”
替换该价格,也可以使用纯
“Rs.”
替换具体价格。

注意:无需在字符类中转义点
“[^\\d.]”
同样有效,但它没有给出我想要的输出……我的价格是RS.120.33格式,我想要120.33格式的输出。这意味着xxx.yyy.zzz,其中xxx是字符,yyy和zzz是数字。。我想先避开xxx。是的,这很有效。。谢谢你,伙计。。。。我不想这样简单地解释RS,因为有时你使用不同国家的数据。所以可能是不同的输入
private static final Pattern PRICE_PATTERN
    = Pattern.compile("\\d+\\.\\d+");

// In code...
final Matcher m = PRICE_PATTERN.matcher(e.text());

item.setPrice(m.find() ? m.group() : "INVALID");