无法对拆分的文本求和

时间:2012-12-09 10:20:13

标签: c#

将所有bx3.text汇总到t2.text时遇到问题。 首先,我将bx3.text与空格分开

    private void total()
    {
        string[] ps = bx3.Text.Split(new string[] {" "}, StringSplitOptions.None );
        t2.Text = ps.Select(x => Convert.ToInt32(x)).Sum().ToString();
    }

我尝试使用t2.text = ps[1]并且显示的数字是正确的。 但是当我试着总结一下时,我得到了错误

  

“输入字符串的格式不正确”(x =>   Convert.ToInt32(X))

bx3.text充满了由单个空格“”

分隔的用户输入数字

2 个答案:

答案 0 :(得分:2)

试试这个:

 string output = ps.Select(x =>
                                { 
                                    int myInt = 0;
                                    int.TryParse(x, out myInt);
                                    return myInt;
                                })
                                .Sum().ToString();

上面的代码将对ps数组中的所有整数求和,它将省略所有非整数值。

第一种情况:如果x是整数(x = 1)

  int myInt = 0;
  int.TryParse(x, out myInt); // change value of myInt to 1, because x is integer
  return myInt; // return 1

第二种情况:如果x不是整数(x =“aaa”)

  int myInt = 0;
  int.TryParse(x, out myInt); // don't change value of myInt, because x is not integer
  return myInt; // return 0

如果x不是整数函数,TryParse总是将myInt的值设置为零(msdn doc)。

答案 1 :(得分:1)

您的字符串中包含无效字符 所以,如果bx3.Text =“1 2 3 4 5”的内容,那么它将正常工作。

是的,

        bx3.Text = "1 2 3 4 5";
        string[] ps = bx3.Text.Split(new string[] {" "}, StringSplitOptions.None );
        t2.Text = ps.Select(x => Convert.ToInt32(x)).Sum().ToString();
         Console.WriteLine(t2.Text);

将打印出15 您可以使用TryParse

过滤掉无效字符串

像这样:

            string bx3 = "1 2 3 4 5abc d e 6";
            string[] ps = bx3.Split(new string[] { " " }, StringSplitOptions.None);
            int a =0;
            Console.WriteLine(ps.Where(x=>Int32.TryParse(x, out a)).Select(x => Int32.Parse(x)).Sum().ToString());   

将打印出16