从文本中的货币中提取分数

时间:2012-12-28 11:27:09

标签: java regex parsing

假设我有一个带有货币值的任意文本,如下所示:

The price today is $1,234.56! Don't miss out!

我想将分数提取为int,即:

123456

一些标准:

  • 000的逗号是可选的
  • 价格低于$ 1,000,000.00
  • $始终存在
  • 小数部分始终存在

我尝试过使用Pattern和Matcher,但它似乎太乱了。

最简单的代码是什么?

2 个答案:

答案 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"));