我有一些功能,我需要确定用户创建的规则是否在语法上有效。
据说我正在建设的结构如下:
这些表达式保存在字符串变量中,例如:
String expression = "";
while(items.hasNext())
{
String currentItem = items.next();
expression += currentItem.value();
}
//Check if the expression is valid
有效表达
有效表达式是具有逻辑运算符的表达式(<,< =,==,=>,>),输出将为true或false(无关紧要)
INVALID EXPRESSIONS
无效表达式是那些没有正确结构的表达式,以确定该表达式是真还是假。
注意
我尝试过使用
通过Boolean.valueOf(字符串)
Boolean.parse(字符串)
其他类型的布尔方法
答案 0 :(得分:4)
编辑现在不允许任何表达式成功。
EDIT2 评估内容的示例。
import javax.script.ScriptEngineManager;
import javax.script.*;
public class HelloWorld{
public static void main(String[] args)
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String expression = "1+2"; // evaluates to Failure: 3
String expression = "1+a"; // evaluates to Failure:
String expression = "1==1"; // evaluates to Success: true
String expression = "1==2"; // evaluates to Failure: false
try
{
Object result = engine.eval(expression);
if(result instanceof Boolean)
{
System.out.print("Success: ");
System.out.println(result);
}
else
{
System.out.print("Failure: ");
System.out.println(result);
}
}
catch(ScriptException e)
{
// handle
System.out.println("Failure");
}
}
}
https://docs.oracle.com/javase/7/docs/api/javax/script/ScriptEngine.html
https://docs.oracle.com/javase/7/docs/api/javax/script/ScriptEngineManager.html