【问题标题】:How to calculate formatted String such as '1,000,000*2' in java如何在java中计算格式化字符串,例如'1,000,000 * 2'
【发布时间】:2019-08-11 07:08:30
【问题描述】:

我正在制作一个程序,它从包含价格详细信息的单元格中提取文本,以及从包含价格信息的单元格中提取文本,然后进行比较。

我用 apache poi 成功提取了它们,但我不知道如何从包含价格细节信息的单元格中计算文本。

这些文本有如下一些模式。

  • \3,000*641
  • 存款(\10,000*105)
  • 牛肉(\20,900*3) + 可乐1.25L(\3,000*2)
  • 鸡肉(\22,900*3) - 折扣(\39,400)

我想有人会推荐在 apache poi 中使用公式评估。不幸的是,包含价格细节信息的单元格类型不是 FORMULA 而是 STRING。

我希望你给我看一些计算这些格式化文本的代码!

【问题讨论】:

  • 您需要获取单元格的内容,将其拆分为数字、文本和符号。然后你需要将数字转换为 Double 并计算......你可以通过使用不同的方法来做到这一点......你自己创建它或考虑使用像 AntLR 这样的 DSL 解析器

标签: java excel string algorithm apache-poi


【解决方案1】:

如果您可以提取表达式并对其进行格式化以删除逗号等(即.replace(",", "")),那么您可以在ScriptEngine 中运行代码以自动解析和执行表达式。

ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from String
Object x = engine.eval("100 * 3");

根据你传递给 eval 方法的 String 类型,它将返回什么样的 Object。

【讨论】:

    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2012-09-06
    相关资源
    最近更新 更多