使用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");