Javascript中的eval函数功能十分强大,可以执行字符串组成的代码,这是众人皆知的。
那么Java中如何实现这样的功能吗?用它吧——ScriptEngine!
Java 1.6提供了ScriptEngine接口,使得我们可以调用脚本引擎。
public static boolean calcVP(String formula, double actVal) {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
Object calcResult = null;
try {
calcResult = engine.eval(formula);
}catch (ScriptException e) {
// TODO: handle exception
}
if (calcResult != null) {
double expVal = Double.parseDouble(calcResult.toString());
return actVal == expVal ? true : false;
}
return false;
}
一个方法起到了一个class的作用,而且Javascript引擎支持什么运算我们就支持,厉害吧~ScriptEngine是个很有用的特性,多多研究加以利用可以节省很多项目成本。
[转自
:http://www.lurenfake.com/script-engine-formula/
]
分享到:
相关推荐
今天小编就为大家分享一篇利用ScriptEngineManager实现字符串公式灵活计算的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
脚本也可以用来作工资计算,利用javascript脚本引擎做了一个工资公式编辑器,很强大的 压缩包里面有项目文件和测试文件。 使用vs2008打开,.net2.0平台使用
Java使用ScriptEngine说明
windows 不能执行脚本时,运行一下这个文件就可以了。(FOR WINDOWS XP 中文版)
问题原因分析:使用ScriptEngine.eval每次都会对脚本进行编译,生成一个新的类,被GroovyClassLoader加载,大量执行计算后,将导致被加载的类数量不断增加,最终OOM。 解决办法:对计算的表达式expression进行预...
ScriptEngine that running java code; Real JavaScript.zip
使用详情见 博客 利用ScriptEngineManager执行js的RSA加密 http://blog.csdn.net/userwyh/article/details/52345718
总体思想是,创建图形面板,为组件添加监听,将运算符前面的数添加到StringBuilder类实例中,利用javaScriptEngine直接对字符串公式运算求值。已知问题:浮点数运算精度问题,例如0.1+0.2不等于0.3,运算符可以按出...
离线安装包,亲测可用
启用任何.NET语言的运行时代码
c 调用java源码 CEL4J Artifact - Discontinued This library has moved to .
基于Dagger+Java ScriptEngine+Java Selenium的自动化测试框架
该class文件讲述了利用ScriptEngine来实现用java调用js的方法,由于js的动态性,在某些方面特别用于,例如,输入字符串优先级运算问题,使用该方法特别方便
定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。 语法 eval(string) 参数 描述 string 必需。... 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛
最后通过转化成JS代码运算得到启发,使用类似方法,我还实现了调用VB代码实现计算 器实时读出键盘输入,发出声音。 3. 系统实现:system implementation 1.程序界面展示 4. 总结体会: summary and experience 实验...
pdi-scriptengine-plugin 类似于 Script 步骤的 PDI 插件,但更容易支持更多 JSR-223 脚本引擎和其他改进,例如: 用于选择脚本引擎的下拉 UI 支持传递给脚本的参数(而不是变量绑定) Groovy 代码片段(因为 ...
Open source ECMAScript 6.0 (ES2015) (JavaScript) engine. Licensed under BSD 3-Clause License. var context = new Context(); context.Eval(@"console.log( `It's JavaScript engine written in C#....
geomajas-project-geometry.zip,几何图形JTS支持几何图形项目