Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Printing a comma (,) after each item in an array

Tags:

c#

Lets say I have an array (or list) of items

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

If I want to print them out so each item is separated by a comma (or any other delimiter), I generally have to do this:

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

    if (i != A.Count-1)
        Console.Write(",");
}

So, my output looks like:

a,b,c,d,e

Is there a better or neater way to achieve this?

I like to use a foreach loop, but that prints a comma after the last element as well, which is undesirable.

like image 685
xbonez Avatar asked Oct 07 '11 02:10

xbonez


4 Answers

Console.WriteLine(string.Join(",", A));
like image 73
Bala R Avatar answered Nov 03 '22 20:11

Bala R


You are looking for String.Join():

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

String.Join Method (String, String[])

 Concatenates all the elements of a string array, using the specified separator between each element.

public static string Join(
    string separator,
    params string[] value
)
like image 28
NullUserException Avatar answered Nov 03 '22 22:11

NullUserException


Is there a better or neater way to achieve this? I like to use a foreach loop, but that prints a comma after the last element as well, which is undesirable.

As others have said, Join does the right thing. But here's another way to think about the problem that might help you in the future. Instead of thinking of the problem as put a comma after every element except the last element -- which you correctly note makes it difficult to work with the "foreach" loop -- think of the problem as put a comma before every element except the first element. Now it is easy to do with a foreach loop!

For about a million more ways to solve a similar problem see:

Eric Lippert's challenge "comma-quibbling", best answer?

And the original blog post:

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

like image 6
Eric Lippert Avatar answered Nov 03 '22 22:11

Eric Lippert


Use the string.Join method, very handy.

String.Join(",", my_array)
like image 4
Gishu Avatar answered Nov 03 '22 21:11

Gishu