如何找到文本框文本的最后一个字符?

时间:2016-01-19 09:16:54

标签: c# asp.net

我是C#的初学者。我在asp.net的帮助下制作了像微软桌面计算器这样的网络计算器。但我被困在一个地方。我的Plus,minus,multiply或div的代码如下:

protected void btnPlus_Click(object sender, EventArgs e)
{
    if (txtBox1.Text.EndsWith("+"))
    {
        txtBox1.Text = txtBox1.Text;
    }
    else
    {
        txtBox1.Text = txtBox1.Text + "+";
        ViewState["Operation"] = "+";
    }
}

但我想检查所有操作的条件,如减号,乘法和除法。我不希望文本框中出现Plus,Minus,Multiply或Div符号。

2 个答案:

答案 0 :(得分:3)

您可以将所有运算符存储在字符串常量中,并检查该字符串中是否包含最后一个字符:

private const string OPERATORS = "+-/*";
protected void btnPlus_Click(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(txtBox1.Text) || // check if string is empty
        OPERATORS.Contains(txtBox1.Text.Last())) // or if last character is a operator
    {
        txtBox1.Text = txtBox1.Text;
    }
    else
    {
        txtBox1.Text = txtBox1.Text + "+";
        ViewState["Operation"] = "+";
    }
}

答案 1 :(得分:1)

您可以执行以下操作:

  1. 提取最后一个字符
  2. 基于视图状态的字符赋值运算符
  3. 如果是任何操作员,则从文本框中删除它们
  4. 最后进行操作

     if (txtBox1.Text != "")
            {
                char last_char = txtBox1.Text[txtBox1.Text.Length - 1];
                switch (last_char)
                {
                    case '+':
                        ViewState["Operation"] = "+";
                        txtBox1.Text.Remove(txtBox1.Text.Length - 1);
                        break;
                    case '-':
                        ViewState["Operation"] = "-";
                        txtBox1.Text.Remove(txtBox1.Text.Length - 1);
                        break;
                    // do the same for all operators
                    default:
    
                        break;
                }
            }