在C#中拆分一个字符串作为计算器

时间:2014-02-23 21:21:13

标签: c# asp.net code-behind

我在ASP.NET中创建一个简单的计算器。当用户选择按钮时,该值将添加到单个textBox中。选择相等按钮后,字符串将被发送到ASP.NET服务器(即使用c#代码隐藏文件)。后面的c#代码假设要拆分此字符串,计算一个值,并将值返回到同一文本框。我正在使用一个名为compute的类,它有一个加,减,乘和除法(它是一个要求)。

我无法确定打破整个字符串的最佳方法,例如3 * 4/65 + 1。

我不确定实现这一目标的最佳方法是什么。下面是我在c#文件中的代码,虽然它不多。我感谢任何帮助/提示。

  using System; 
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;

   public partial class Assign2_Calc : System.Web.UI.Page
  {
    protected void ButtonEqual_Click(object sender, EventArgs e)
    {
    string inputStr = inputBox.Text;
    double result = 0;;
    Calculator myCalculator = new Calculator();
    switch ()
    {
        case "+":
            result = myCalculator.Add(val1, val2);
            break;
    }


    inputBox.Text = result.ToString();
    }  
    }

2 个答案:

答案 0 :(得分:1)

您可以使用Regex.Split()在正则表达式中捕获括号,以便返回运算符和表达式的参数,例如:

Regex.Split("([+-/*()])")

使用示例表达式3*4/65+1,结果为:{"3","*","4","/","65","+","1"}

使用带有未实现运算符的表达式:3*2^2/65+1,结果为:{"3","*","2^2","/","65","+","1"}

你会得到一个字符串数组,希望包含单独的参数和运算符。您必须检查每个字符串中的无效元素,例如未实现的运算符或其他无效字符(例如^\)。如果split数组中的任何字符串不仅仅是有效参数或运算符,您将返回错误结果。

答案 1 :(得分:0)

对于简单表达式,您可以使用Compute方法:

var result = new DataTable().Compute("3 * 4 / 65 + 1", null);

还有一些第三方库,例如NCalc,您可能会发现它们很有用。