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