0

假设我有任意文本,其中包含货币值,如下所示:

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

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

123456

一些标准:

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

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

执行此操作的最简单代码是什么?

4

2 回答 2

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
于 2012-12-28T11:40:39.120 回答
2

我认为包含解析为 int 的这一行代码尽可能简洁:

int cents = Integer.parseInt(input.replaceAll(".*\\$((\\d+),)?(\\d+)\\.(\\d+).*", "$2$3$4"));
于 2012-12-28T12:37:51.033 回答