假设我有任意文本,其中包含货币值,如下所示:
The price today is $1,234.56! Don't miss out!
我想将美分数提取为int
,即:
123456
一些标准:
- 000 的逗号是可选的
- 价格低于 1,000,000.00 美元
$
总是在那里- 小数部分始终存在
我曾尝试使用 Pattern 和 Matcher,但它似乎太乱了。
执行此操作的最简单代码是什么?
尝试
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
我认为包含解析为 int 的这一行代码尽可能简洁:
int cents = Integer.parseInt(input.replaceAll(".*\\$((\\d+),)?(\\d+)\\.(\\d+).*", "$2$3$4"));