将分隔记录转换为单独的字符串?

Convert delimited record to seperate strings?

在我的网络表单上,我有一个令牌框,用户可以在其中 select 多个答案,并使用 ~ 将它们分开来编译它们。我正在尝试在此页面上添加一个分数,我需要拆分这些值。我试过使用它,它说不能将 char 显式转换为字符串。假设字段答案是 3~4~5

我如何将其转换为 3 4 5 以允许我执行计算的方式。

string List1 = threeriskfactors.Text.ToString();
string[] Vals1 = List1.Split('~');
String name1 = List1[0];
String name2 = List1[1];

我在从下拉列表中添加单个值时没有遇到任何问题,但这让我很困惑。对于我的其他计算,我的代码如下所示:

int a1 = Convert.ToInt32(cancerisabnormalcells.SelectedValue.ToString());
int b1 = Convert.ToInt32(cancerissecondcause.SelectedValue.ToString());
int d1 = Convert.ToInt32(americancancersociety.SelectedValue.ToString());
int final1 = a1 + b1 + d1;

如何拆分令牌框值以便将其添加到此计算中?

如果你想要它们的总和,那么它很简单:

int final = List1.Split('~').Select(s => int.Parse(s)).Sum();

要在解析前验证每个值是否可解析,可以使用ListForEach方法:

List1.Split('~').ToList().ForEach(s => { int a =0; int.TryParse(s, out a); final +=a;  });
 IEnumerable<int> vals1 = list1.Select(e=> Convert.ToInt32(e));
int final1=0;
foreach(int val in vals1)
{
     final1 = final1 + val;
}

这应该可以做到。

var total = 0;

foreach (var item in list1.Split('~'))
    total += Int32.Parse(item);

顺便说一下,我不确定您是如何连接这些值来获得波浪线分隔的字符串的。但是,值得注意的是 HTML 表单会自动从共享相同名称的 HTML 表单元素创建以分号分隔的值列表。