首页 > 解决方案 > 如何在java中计算格式化字符串,例如'1,000,000 * 2'

问题描述

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

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

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

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

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

标签: javaexcelstringalgorithmapache-poi

解决方案


如果您可以提取表达式并将它们格式化以删除逗号等(即.replace(",", "")),那么您可以在 a 中运行代码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。


推荐阅读