有没有人知道比NCalc更新的表达式评估器?最后一个版本是在2011年,一个(非常)快速的谷歌搜索几乎没有从我能看到的内容中返回。
答案 0 :(得分:7)
我知道这是一个迟到的回应,但为了别人的搜索,也许是你自己。你看过罗斯林了吗?我相信微软现在正在使用它。您可以传递简单的c#或vb.net表达式来评估完整代码。以下示例显示了一个简单的数学问题
ScriptEngine roslynEngine = new ScriptEngine();
Roslyn.Scripting.Session session = roslynEngine.CreateSession();
session.AddReference("System.Web");
session.ImportNamespace("System");
session.ImportNamespace("System.Web");
var result = (session.Execute("1 + 1"));
答案 1 :(得分:4)
github here上有一个更新的叉子。
目前我不知道质量是否更好。
答案 2 :(得分:2)
我完全理解这个答案有多晚了但是我想提出我的解决方案,因为我相信如果有人希望在多个平台上使用表达式,它可以在使用NCalc之后添加更多的答案。< / p>
- 更新 -
我为C#创建了一个解析器,并计划在接下来的几个月内为Java和Swift实现它。这意味着您可以在多平台上评估表达式,而无需对每个平台进行调整。
虽然计划使用Java和Swift,但它还没有完全发布。相反,现在支持.NET Standard
支持Xamarin
个应用。
- 结束更新 -
富有表现力的工具,可在以下位置获得: GitHub或Nuget。
该网站上有相当数量的文档,但是为了防止链接腐烂,这是一个如何使用它的示例:
可变支持
var expression = new Expression("1 * [variable]");
var result = expression.Evaluate(new Dictionary<string, object> { ["variable"] = 2);
<强>功能强>
var expression = new Expression("sum(1,2,3,4)");
var result = expression.Evaluate();
它的设计旨在尽可能地匹配NCalc,但它增加了对诸如“null”等内容的支持。关键字。
此答案与Expressive answer重复。在链接腐烂的情况下,我重复了它。
答案 3 :(得分:0)
答案 4 :(得分:0)
我知道这是一个非常晚的响应(晚7年)
还有一个仍在开发中的fork,可以在这里找到: https://github.com/ncalc/ncalc