[英]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.