从字符串评估关系运算符

时间:2018-08-05 23:47:51

标签: c# relational-operators

我在数据库中存储了关系表达式,这些表达式在iOS应用程序中为字符串。我想评估C#字符串中的条件,类似于以下伪代码中的逻辑:

string str1= "x > 0";
string str2= "y < 1";

int x = 1;
int y=0;

if(str1 && str2)
{
        //do stuff
}

2 个答案:

答案 0 :(得分:0)

如果表达式很简单,例如示例中的表达式,则可以简单地解析它们。但是,如果您想到的是更复杂的表达式,那么我建议您看一下C#Expression Trees。该文档在解释方面做得很好。

一种更简单的方法是使用类似https://github.com/davideicardi/DynamicExpresso

的库

答案 1 :(得分:0)

使用 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
    }

评估方法评估数学表达式和条件表达式

bool Eval(string st)
{
    ExpressionEval eval = new ExpressionEval(st);
    return Convert.ToBoolean(eval.Evaluate().ToString());
}

请阅读更多其他库,您可以将其用于此类问题。