Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在用分隔符分隔的字符串中添加数字_C# - Fatal编程技术网

C# 如何在用分隔符分隔的字符串中添加数字

C# 如何在用分隔符分隔的字符串中添加数字,c#,C#,我需要添加用户输入的数字。数字将来自单个文本框,并用逗号分隔。可以使用的数字示例有7,9,10,2,18,6 这是到目前为止我的代码 private void calculateButton_Click(object sender, EventArgs e) { string str = inputNumbTextBox.Text; char[] delim = { ',' }; string[] tokens = str.Spli

我需要添加用户输入的数字。数字将来自单个文本框,并用逗号分隔。可以使用的数字示例有7,9,10,2,18,6

这是到目前为止我的代码

    private void calculateButton_Click(object sender, EventArgs e)
    {
        string str = inputNumbTextBox.Text;
        char[] delim = { ',' };
        string[] tokens = str.Split(delim);

        if (char.IsDigit(str, 0))
        {
        }
        else
        {
            MessageBox.Show("Please enter a number");
        }
    }

提前感谢。

使用
int.TryParse
而不是
char.IsDigit

int sum = 0;
string[] tokens = str.Split(delim);
foreach(string str in tokens)
{
    int value = 0;
    if (int.TryParse(str, out value))
    {
        sum += value;
    }
}
这对我很有用:

var text = "7,9,10,2,18,6";
var sum =
    text
        .Split(new [] { ',' })
        .Select(x => int.Parse(x.Trim()))
        .Sum();
我得到了结果

我通常会更进一步,定义一个清洁功能,如下所示:

Func<string, int?> clean = x =>
{
    var r = (int?)null;
    int v;
    if (int.TryParse(x.Trim(), out v))
    {
        r = v;
    }
    return r;
};

你的问题是什么?您已经有了
令牌中的所有数字
。循环令牌,将数字转换为整数并相加。您已经完成了最难的部分。您可能需要添加一个
else
,让用户知道one+值无法转换。
var sum =
    text
        .Split(new [] { ',' })
        .Select(x => clean(x))
        .Where(x => x.HasValue)
        .Sum();