C#逗号分隔的字符串添加额外的结尾逗号

问题描述:

我将一个值的字符串从表单传递到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

,你也可以尝试使用的string.join ...

var selection = String.Join(", ", CarNodes); 

更多的信息在这里... https://msdn.microsoft.com/en-us/library/57a79xd0(v=vs.110).aspx

+0

blah拼写错误....我希望你得到点 – rbtLong

+0

这是一个撕裂斯蒂芬Muecke的评论... –

+0

@JeremyThompson真的如何当我第一次回答时,它是一个撕裂?大声笑 – rbtLong

始终使用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},”)'方法 –

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

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