0

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

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

int x = 1;
int y=0;

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

2 回答 2

0

使用Afk 表达式库(Afk 链接)并尝试以下代码,它会在我整理后解决您的问题。

必需的命名空间

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());
}

还可以阅读更多其他可以用于解决此类问题的库。

于 2018-08-06T00:46:11.560 回答
0

如果表达式像示例中的那样简单,那么您可以简单地解析它们。但是,如果您有更复杂的表达式,那么我建议您查看 C# Expression Trees。该文档很好地解释了它。

一个更简单的方法是使用库,如:https ://github.com/davideicardi/DynamicExpresso

于 2018-08-06T00:01:33.173 回答