2017-04-18 98 views
0

我將一個值的字符串從表單傳遞到MVC5控制器,並使用C#將數據保存在數據庫中的一個字段中。C#逗號分隔的字符串添加額外的結尾逗號

string[]CarNotes與在控制器中的ActionResult訪問並且如下操作:

string selection = ""; 
       if (CarNotes != null && CarNotes.Length > 0) 
       { 
        foreach (string s in CarNotes) 
        { 
         selection += s + ", "; 
        } 
       } 

我然後保存的選擇的內容的分配的數據庫字段。這工作正常。唯一的問題是它在列表的末尾添加了一個額外的','。我怎樣才能防止這個額外的','。由於

+2

使用[的string.join](https://msdn.microsoft.com/en-us/library/57a79xd0(v = vs.110)的.aspx)方法 - '字符串值=的string.join (「,」,CarNotes);' –

+0

'選擇+ =(選擇==「」? 「」:「,」)+ s;'應該這樣做,儘管'String.Join'是一個更好的主意。 – HABO

回答

1

始終使用StringBuilder,當你連接字符串:

StringBuilder selection = new StringBuilder(); 
if (CarNotes != null && CarNotes.Length > 0) 
{ 
    foreach (string s in CarNotes) 
    { 
     selection.Append(s); 
     selection.Append(", "); 
    } 
} 
//Trim the ending space, then trim the ending comma 
return selection.ToString().TrimEnd().TrimEnd(','); 

另外,您可以使用Substring

if (selection.EndsWith(", ")) 
{ 
    selection = selection.Substring(0, selection.Length - 2); 
} 

或者Remove

if (selection.EndsWith(", ")) 
{ 
    selection = selection.Remove(selection.Length - 2); 
} 
+0

與隱含的'StringBuilder'用法與'String.Join'相比,顯式的'StringBuilder'用法和刪除結尾分隔符有什麼好處嗎? –

+0

你也可以使用AppendFormat($「{s},」)'方法 –

0

除了的string.join,你也可以使用聚合(LINQ,又名減少函數式編程)

var selection = CarNotes.Aggregate((i, j) => i + ", " + j);