java - 从文本中的货币中提取以美分为单位的金额

标签 java regex parsing

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

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

关于java - 从文本中的货币中提取以美分为单位的金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14068802/

相关文章:

java - 错误 : Exception in thread "main" java. lang.NullPointerException

python - Django MySQL 与 iRegex 搜索精确词匹配

linux - 如何更正浮点值范围?

json - 关于 swift 解析 JSON

java - 为 ORM 域图设计 JPARepository 的最佳实践

java - 从 1-300 生成 30 个随机数的数组返回全 0 而不是其他数字

javascript - 如何替换字符并保持字符串长度?

java - 使用正则表达式忽略两个字符串之间的文本

java - 使用 JSoup 抓取 Google 天气结果

java - 如何让随机生成的对象出现在我的屏幕上?