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