1

我需要在 Visual Studio Web Developer (Asp C#) 中制作一个基于表单的计算器 我有一个显示单击按钮的值的文本框(包括 +、-、/、*)...

现在我希望它计算该文本框的字符串值,如果可能的话......

编辑:我知道 JS 有一个非常简单的方法来使用 eval(stringholdername); 但我似乎找不到任何与 ASP C# 等效的方法

4

2 回答 2

0

您可以使用一些简单的递归方法,如下所示:

    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");

祝你的任务好运。

于 2013-03-14T18:25:17.553 回答
0

查看NCalc,它是一个开源数学表达式评估器。

于 2013-03-14T17:37:33.377 回答