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.
Console.WriteLine(string.Join(",", A));
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 )
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
Use the string.Join method, very handy.
String.Join(",", my_array)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With