2017-08-24 84 views
1

在我的網絡表單上,我有一個令牌框,用戶可以在其中選擇多個答案,並使用~來編譯它們以將它們分開。我正在嘗試在此頁面上添加分數,並且我需要分割這些值。我試着用這個,它說不能顯式地將字符串轉換爲字符串。比方說,該領域的回答是3~4~5將分隔記錄轉換爲單獨的字符串?

我將如何轉換,要345的方式,讓我來執行計算。

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; 

如何分割令牌箱價值,所以我可以把它添加到這個計算?

回答

1

如果你希望他們的總和那麼簡單:

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; }); 
+0

終於做.Sum()獲得添加結果! – Dhanasekar

+0

@DhanasekarSM這就是當你沒有很好地閱讀問題時會發生什麼。我認爲他需要所有數字以後使用它們。但就在你說出來之前,我明白了。 –

+0

謝謝你的工作。我還有一個問題需要跟進。如果用戶沒有在令牌框中輸入任何答案,則會失敗。我如何檢查空值? –

0
IEnumerable<int> vals1 = list1.Select(e=> Convert.ToInt32(e)); 
int final1=0; 
foreach(int val in vals1) 
{ 
    final1 = final1 + val; 
} 

這應該做到這一點。

0
var total = 0; 

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

順便說一句,我不知道如何連接值以獲得以波浪號分隔的字符串。但值得注意的是,HTML表單將自動從共享相同名稱的HTML表單元素中創建以分號分隔的值列表。

相關問題