簡體   English   中英

評估 c# 中的任意字符串表達式

[英]Evaluating an arbitrary string expression in c#

我有一個方法需要根據傳遞給它的字符串表達式返回 true 或 false。 字符串表達式可能如下所示:

("ASDF"=="A" || "BED"!="BED") && (5>=2)

或計算結果為 Boolean 結果的任何有效 C# 表達式。 我只需要支持基本的字符串和數學比較運算符加括號。 我試過 NCalc 但是當我通過它時:

“創”=“創” || “創”=“發電機”

它在 NCalc.Domain.EvaluationVisitor.Visit(Identifier parameter) 處生成錯誤 System.ArgumentException: Parameter was not defined (Parameter 'GEN')

當我使用以下代碼時:

NCalc.Expression e = new(filterExpression, EvaluateOptions.IgnoreCase); var filterResultObject =e.Evaluate();

關於如何評估任意表達式的任何想法都會受到贊賞,因為直到運行時我才會知道該表達式。

格雷格

我發現 NCalc 將正確評估字符串,但前提是它們是單引號,例如。('GEN'=='GEN'),如果字符串是雙引號。 錯誤被拋出。

對於您的示例,您可以像這樣使用NFun package:

string str =  "\"ASDF\"==\"A\" || \"BED\"!=\"BED\") && (5>=2)"
bool result = Funny.Calc<bool>(str)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM