我需要在 Visual Studio Web Developer (Asp C#) 中制作一个基于表单的计算器 我有一个显示单击按钮的值的文本框(包括 +、-、/、*)...
现在我希望它计算该文本框的字符串值,如果可能的话......
编辑:我知道 JS 有一个非常简单的方法来使用 eval(stringholdername); 但我似乎找不到任何与 ASP C# 等效的方法
我需要在 Visual Studio Web Developer (Asp C#) 中制作一个基于表单的计算器 我有一个显示单击按钮的值的文本框(包括 +、-、/、*)...
现在我希望它计算该文本框的字符串值,如果可能的话......
编辑:我知道 JS 有一个非常简单的方法来使用 eval(stringholdername); 但我似乎找不到任何与 ASP C# 等效的方法
您可以使用一些简单的递归方法,如下所示:
public int Calculate(string expression)
{
int result = 0;
string[] expressions = expression.Split('+');
if (expressions.Length > 1)
{
result = 0;
foreach (string expr in expressions)
result += Calculate(expr);
return result;
}
expressions = expression.Split('-');
if (expressions.Length > 1)
{
result = Calculate(expressions[0]);
for (int i = 1; i < expressions.Length; i++)
result -= Calculate(expressions[i]);
return result;
}
expressions = expression.Split('*');
if (expressions.Length > 1)
{
result = 1;
foreach (string expr in expressions)
result *= Calculate(expr);
return result;
}
expressions = expression.Split('/');
if (expressions.Length > 1)
{
result = Calculate(expressions[0]);
for (int i = 1; i < expressions.Length; i++)
result /= Calculate(expressions[i]);
return result;
}
if (!int.TryParse(expression, out result))
throw new ArgumentException("Expression was not nummeric", "expression");
return result;
}
很简单,不支持(和)和负数,只支持+、-、*和/。
你像这样使用它:
int result = Calculate("20*10+200/100");
祝你的任务好运。
查看NCalc,它是一个开源数学表达式评估器。