繁体   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)
问题未解决?试试搜索: 评估 c# 中的任意字符串表达式
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM