方式1:
package www.paic.test;
import javax.script.*;
public class TestScript {
public static void main(String[] args) throws Exception {
//String str = "(a >= 0 && a <= 5)";
String str = "(a > 0)";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
engine.put("a", 4);
Object result = engine.eval(str);
System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:"
+ result);
}
}
方式2:
package www.paic.test;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;public class Snippet {
private static String discountMoney(String orderAmt,String marketType) {
String discountAmt = "0";
marketType = marketType.replaceAll("#orderAmt#",orderAmt); // 计算优惠金额表达式
ScriptEngineManager sem = new ScriptEngineManager();
try {
Double result = (Double) sem.getEngineByName("javascript").eval(marketType);
// 如果优惠金额大于订单金额则优惠金额=订单金额
if (result > Double.valueOf(orderAmt)) {
discountAmt = orderAmt;
}else{
discountAmt = String.valueOf(result);
}
if(discountAmt.contains(".")){
discountAmt = discountAmt
.substring(0, discountAmt.lastIndexOf(".")); // 以分为单位,去除小数点
}
} catch (ScriptException ex) {
ex.printStackTrace();
}
return discountAmt;
}
public static void main(String[] args) {
// #orderAmt#*0.10
// String result=discountMoney("","");
ScriptEngineManager sem = new ScriptEngineManager();
try {
Double result = (Double) sem.getEngineByName("javascript").eval("100*1");
System.out.println("result=" + result);
} catch (ScriptException e) {
e.printStackTrace();
}
}
}