C# 如何在用分隔符分隔的字符串中添加数字
我需要添加用户输入的数字。数字将来自单个文本框,并用逗号分隔。可以使用的数字示例有7,9,10,2,18,6 这是到目前为止我的代码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
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();