在数组中的每个项目后打印逗号(,)

可以说我有一个项目的数组(或列表)

A[] = [a,b,c,d,e] 

如果我想打印出来,所以每个项目都用逗号(或任何其他分隔符)分隔,我通常必须这样做:

 for(int i=0; i < A.Count; i++) { Console.Write(A[i]); if (i != A.Count-1) Console.Write(","); } 

所以,我的输出看起来像:

 a,b,c,d,e 

是否有更好或更简洁的方法来实现这一目标?

我喜欢使用foreach循环,但是在最后一个元素之后也会打印逗号,这是不可取的。

 Console.WriteLine(string.Join(",", A)); 

您正在寻找String.Join()

 var list = String.join(",", A); 

String.Join方法(String, String[])

使用每个元素之间的指定分隔符连接字符串数组的所有元素。

 public static string Join( string separator, params string[] value ) 

是否有更好或更简洁的方法来实现这一目标? 我喜欢使用foreach循环,但是在最后一个元素之后也会打印逗号,这是不可取的。

正如其他人所说, Join做对了。 但这是另一种思考可能在未来帮助你的问题的方法。 而不是将问题想象为在除了最后一个元素之外的每个元素之后放置一个逗号 – 你正确注意到这使得很难使用“foreach”循环 – 将问题想象为在除了第一个元素之外的每个元素之前放置一个逗号元素 。 现在使用foreach循环很容易!

对于大约一百万种解决类似问题的方法,请参阅:

Eric Lippert挑战“逗号 – 狡辩”,最佳答案?

原帖博客:

http://blogs.msdn.com/b/ericlippert/archive/2009/04/15/comma-quibbling.aspx

使用string.Join方法,非常方便。

 String.Join(",", my_array) 

使用:

String.Join(",", arrayOfStrings);

 string separator = String.Empty; for(int i=0; i < A.Length; i++) { Console.Write(seperator); Console.Write(A[i]); separator = ","; } 
 using System; using System.Linq; public class Program { public static void Main() { string[] values = new string[]{"banana", "papaya", "melon"}; var result = values.Aggregate((x,y) => x + ", " + y); Console.WriteLine(result); } }