我有一个场景,我将数据库中的"if"条件保存为字符串.例如:
String condition = "(([age] >= 28) && ([nationality] == 'US'))";
Run Code Online (Sandbox Code Playgroud)
要么
String condition = "([age] >= 28)";
Run Code Online (Sandbox Code Playgroud)
现在,我想评估用户输入条件语法正确.这些是不正确语法的示例:
String condition = "(([age] >= 28) && ([nationality] == 'US')"; //Missed ')' bracket
String condition = "[age] >= 28)"; //Missed Opening bracket '('
Run Code Online (Sandbox Code Playgroud)
就像我们在Evaluate Query Expression中一样.可能是表达发辫可能会有所帮助.但是怎么样?在这方面需要帮助.
看看NCalc。它是评估数学表达式的框架。
当表达式有语法错误时,求值将抛出EvaluationException。
try
{
new Expression("(3 + 2").Evaluate();
}
catch(EvaluationException e)
{
Console.WriteLine("Error catched: " + e.Message);
}
Run Code Online (Sandbox Code Playgroud)
不过,您还可以使用该方法在评估之前检测语法错误HasErrors()。
Expression e = new Expression("a + b * (");
if(e.HasErrors())
{
Console.WriteLine(e.Error);
}
Run Code Online (Sandbox Code Playgroud)