[英]Evaluate string expression and convert to bool?
我想评估字符串表达式并将结果转换为 bool。
例如
string expression = !((71 > 70) && (80 > 71)) || 72 < 71 ;
上面的表达式必须求值并返回 true。
谁能建议如何评估表达式并返回 bool 值?
我不相信有任何内置的表达式求解器可以用于这种表达式评估。 我会推荐Microsoft.CodeAnalysis.CSharp.Scripting进行评估。
string expression = "!((71 > 70) && (80 > 71)) || 72 < 71";
bool output = CSharpScript.EvaluateAsync<bool>(expression).Result;
// -> false
你的问题有问题
!((71 > 70) && (80 > 71)) || 72 < 71
!((true) && (true)) || false
!(true & true)
false
string express = "within quotes";
. 上面 post 中的语句 ( string expression = !((71 > 70) && (80 > 71)) || 72 < 71 ;
) 不是有效的 C# 语句。您可以使用 NCalc 包。 下面的代码产生“假”
using System;
using NCalc;
public class Program
{
public static void Main()
{
Expression e = new Expression("!((71 > 70) && (80 > 71)) || 72 < 71");
bool v = (bool)e.Evaluate();
Console.WriteLine(v.ToString());
}
}
.Net 小提琴: https : //dotnetfiddle.net/02c5ww
如果您的要求是将 expressoin 输出作为字符串“true”,则使用它,
string expression = Convert.ToString(!((71 > 70) && (80 > 71)) || 72 < 71);
如果要求是让 bool “true”,则使用它,
bool expression = !((71 > 70) && (80 > 71)) || 72 < 71;
但是你的表达就像它会返回 false,要让它成为 true 删除“!” 如下,
string expression = Convert.ToString(((71 > 70) && (80 > 71)) || 72 < 71);
bool bool_expression = ((71 > 70) && (80 > 71)) || 72 < 71;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.