假设我有一个带有货币值的任意文本,如下所示:
The price today is $1,234.56! Don't miss out!
我想将分数提取为int
,即:
123456
一些标准:
$
始终存在我尝试过使用Pattern和Matcher,但它似乎太乱了。
最简单的代码是什么?
答案 0 :(得分:3)
尝试
String s = "The price today is $1,234.56! Don't miss out!";
Pattern p = Pattern.compile("\\$(((\\d+,?\\d++)|(\\d++))\\.?\\d\\d)");
Matcher m = p.matcher(s);
m.find();
Long cents = Long.parseLong(m.group(1).replaceAll("[,.]", ""));
System.out.println(cents);
打印
123456
答案 1 :(得分:2)
我认为这一行包括对int的解析,尽可能简洁:
int cents = Integer.parseInt(input.replaceAll(".*\\$((\\d+),)?(\\d+)\\.(\\d+).*", "$2$3$4"));