use*_*653 3 c# string parsing function string-parsing
我需要知道是否有任何库允许我,给定一个表示数学函数的字符串,比如说x^2+x+1,(不关心字符串格式,任何对我有用的)会生成一个C#func这将代表所述功能.
已经使用FLEE(快速轻量级表达评估器)一段时间了,它一直很好用.他们有一个版本,可以维护Silverlight的大部分功能.它旨在完全满足您的要求和更多.
Flee是.NET框架的表达式解析器和评估器.它允许您在运行时计算字符串表达式的值,例如sqrt(a ^ 2 + b ^ 2).它使用自定义编译器,强类型表达式语言和轻量级codegen将表达式直接编译为IL.这意味着表达式评估非常快速有效.
根据您的评论评估示例x^2+x+1(用记事本编写):
public Func<double, double> CreateExpressionForX(string expression)
{
ExpressionContext context = new ExpressionContext();
// Define some variables
context.Variables["x"] = 0.0d;
// Use the variables in the expression
IDynamicExpression e = context.CompileDynamic(expression);
Func<double, double> expressionEvaluator = (double input) =>
{
content.Variables["x"] = input;
var result = (double)e.Evaluate();
return result;
}
return expressionEvaluator;
}
Func<double, double> expression = CreateExpressionForX("x^2 + x + 1");
double result1 = expression(1); //3
double result2 = expression(20.5); //441.75
double result3 = expression(-10.5); //121.75
Func<double, double> expression2 = CreateExpressionForX("3 * x + 10");
double result4 = expression2(1); //13
double result5 = expression2(20.5); //71.5
double result6 = expression2(-10.5); //-21.5
Run Code Online (Sandbox Code Playgroud)