【问题标题】:Parse Formulae in .NET在 .NET 中解析公式
【发布时间】:2010-04-15 02:00:04
【问题描述】:

我正在尝试用 C# 语言解析公式,例如

"5*3 + 2" 
"(3*4 - 2)/5"

是否可以用 C# 或 VBScript、JavaScript 等脚本(将在 c# 程序中调用)。

【问题讨论】:

    标签: c# parsing formula


    【解决方案1】:

    我在使用 Flee 方面拥有丰富的经验,这是一个 C# 库,用于评估您所描述的表达式。您可以将表达式计算为强类型语句,因此如果您想要一个整数,例如,"(1 + 2) * 5" 可以,但"hello world" 不行。

    您甚至可以挂钩特定的变量或函数。 Flee examples page 是一个很好的起点。

    【讨论】:

    • 谢谢马克。但是flee需要下载,所以我更喜欢JScript.Net。
    • 它实际上是一个 VB.NET 库。当我查看源代码试图了解我遇到的一些问题时,我吓坏了!
    • +1 to Flee - 我在 4 分钟内评估了超过 50K 个表达式。表达式并不复杂,只有算术,很少有空检查
    【解决方案2】:

    我以前在 C# 中使用过一个技巧,那就是使用 JScript.NET 的 eval 函数。您可以在我对this question 的回答中找到完整的代码。它不依赖于像 VBScript 或 JavaScript 这样的脚本语言,它是纯 .NET,我使用的实现从 C# 代码动态生成 JScript.NET 程序集,因此无需在您的解决方案中混合语言。

    【讨论】:

    • 谢谢大卫,这就是我想要的。
    【解决方案3】:

    我已经成功地使用了来自 Microsoft 的 Dynamic Linq 示例来动态制定使用 System.Linq.Expressions namespace 下的类型的表达式。这对我来说效果很好,让我可以使用更自然的 C# 语法来代替 ActiveReports 默认表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多