从字符串中评估关系运算符
evaluate relational operator from a string
我在数据库中存储了关系表达式,我在 iOS 应用程序中将其作为字符串。我想在 C# 中评估字符串中的条件,类似于以下伪代码中的逻辑:
string str1= "x > 0";
string str2= "y < 1";
int x = 1;
int y=0;
if(str1 && str2)
{
//do stuff
}
如果表达式像示例中的那样简单,那么您可以简单地解析它们。但是,如果您有更复杂的表达式,那么我建议您看一下 C# Expression Trees。文档很好地解释了它。
一个更简单的方法是使用像这样的库:https://github.com/davideicardi/DynamicExpresso
使用Afk 表达式 库(Afk link)
并尝试按照我整理好的代码来解决您的问题。
需要命名空间
using Afk.Expression;
将表达式作为字符串发送到库评估程序的代码
string str1 = "x > 0";
string str2 = "y < 1";
int x = 10;
int y = 0;
var st1=str1.Replace("x",x.ToString());
var st2 = str2.Replace("y", y.ToString());
if (Eval(st2) && Eval(st1))
{
//checked
}
Eval 方法计算数学和条件表达式
bool Eval(string st)
{
ExpressionEval eval = new ExpressionEval(st);
return Convert.ToBoolean(eval.Evaluate().ToString());
}
同时阅读更多其他库,您可以利用这些库来解决此类问题。
我在数据库中存储了关系表达式,我在 iOS 应用程序中将其作为字符串。我想在 C# 中评估字符串中的条件,类似于以下伪代码中的逻辑:
string str1= "x > 0";
string str2= "y < 1";
int x = 1;
int y=0;
if(str1 && str2)
{
//do stuff
}
如果表达式像示例中的那样简单,那么您可以简单地解析它们。但是,如果您有更复杂的表达式,那么我建议您看一下 C# Expression Trees。文档很好地解释了它。
一个更简单的方法是使用像这样的库:https://github.com/davideicardi/DynamicExpresso
使用Afk 表达式 库(Afk link) 并尝试按照我整理好的代码来解决您的问题。
需要命名空间
using Afk.Expression;
将表达式作为字符串发送到库评估程序的代码
string str1 = "x > 0";
string str2 = "y < 1";
int x = 10;
int y = 0;
var st1=str1.Replace("x",x.ToString());
var st2 = str2.Replace("y", y.ToString());
if (Eval(st2) && Eval(st1))
{
//checked
}
Eval 方法计算数学和条件表达式
bool Eval(string st)
{
ExpressionEval eval = new ExpressionEval(st);
return Convert.ToBoolean(eval.Evaluate().ToString());
}
同时阅读更多其他库,您可以利用这些库来解决此类问题。