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

xbo*_*nez 8 c#

假设我有一个项目的数组(或列表)

A[] = [a,b,c,d,e]
Run Code Online (Sandbox Code Playgroud)

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

for(int i=0; i < A.Count; i++)
{
    Console.Write(A[i]);

    if (i != A.Count-1)
        Console.Write(",");
}
Run Code Online (Sandbox Code Playgroud)

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

a,b,c,d,e
Run Code Online (Sandbox Code Playgroud)

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

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

Bal*_*a R 27

Console.WriteLine(string.Join(",", A));
Run Code Online (Sandbox Code Playgroud)

  • @HasanKhan [没有区别](http://blogs.msdn.com/b/csharpfaq/archive/2004/03/12/what-s-the-difference-between-code-string-code-and-code `string`和`System.String`之间的-system-string-code.aspx.这是开发者的偏好. (5认同)
  • @HasanKhan类*是*数据类型:`string`和`System.String`都指向同一个类,但前者也是C#关键字.我同意vscjones,使用一个或另一个归结为开发人员偏好.就个人而言,我发现`string.Join`比替代方案更具可读性,因为我从不使用`String`. (3认同)

Nul*_*ion 9

您正在寻找String.Join():

var list = String.join(",", A);
Run Code Online (Sandbox Code Playgroud)

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

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

public static string Join(
    string separator,
    params string[] value
)
Run Code Online (Sandbox Code Playgroud)


Eri*_*ert 6

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

正如其他人所说,Join做对了.但是,这是考虑将来可能对您有所帮助的问题的另一种方式.而不是把问题想象成在除了最后一个元素之外的每个元素之后放一个逗号 - 你正确注意到这使得很难使用"foreach"循环 - 想想问题是在除了第一个元素之外的每个元素之前放一个逗号元素.现在使用foreach循环很容易!

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

Eric Lippert挑战"逗号 - 狡辩",最佳答案?

原帖博客:

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