java解析逻辑表达式(执行逻辑运算符的字符串)
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;public class expression
{
public static void main(String[] args) throws Exception {
String str = "(a and b) or (c and d)";
str = str.replaceAll("or", "||");
str = str.replaceAll("and", "&&");
System.out.println(str);
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
engine.put("a",true);
engine.put("b",false);
engine.put("c",false);
engine.put("d",true);
Object result = engine.eval(str);
System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result);
}
}
原文地址:http://blog.sina.com.cn/s/blog_acdc06250101p5dh.html