243

I would like to convert a string array to a single string.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

I would like to have something like "Hello World!"

John Saunders
162k26 gold badges252 silver badges403 bronze badges
asked Jan 30, 2011 at 5:51

9 Answers 9

419
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string.Join("", test);
jamesmortensen
34.2k11 gold badges103 silver badges124 bronze badges
answered Jan 30, 2011 at 5:54
Sign up to request clarification or add additional context in comments.

4 Comments

+1 - I removed the space in the Join to make this correct, as pointed out by @davidg
Thanks. I didn't notice the trailing space, even though I copy pasted it right into my answer.
I also needed to put a separator in between my strings (coma and space) so I used: var separator = ", "; string.Join(separator , test);
Great answer. Though, I would suggest to use string.Join(string.Empty, test) rather than using an empty-paranthesis.
91

A slightly faster option than using the already mentioned use of the Join() method is the Concat() method. It doesn't require an empty delimiter parameter as Join() does. Example:

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string result = String.Concat(test);

hence it is likely faster.

answered May 16, 2016 at 20:30

1 Comment

Concat is better, in inner code of Join, it will append separator after each item. But Concat not have such codes, it is simpler and more direct than Join. This is the fittst answer.
37

A simple string.Concat() is what you need.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string result = string.Concat(test);

If you also need to add a seperator (space, comma etc) then, string.Join() should be used.

string[] test = new string[2];
test[0] = "Red";
test[1] = "Blue";
string result = string.Join(",", test);

If you have to perform this on a string array with hundereds of elements than string.Join() is better by performace point of view. Just give a "" (blank) argument as seperator. StringBuilder can also be used for sake of performance, but it will make code a bit longer.

answered Dec 17, 2015 at 4:30

2 Comments

Concat and Join are faster than the StringBuilder if you have 4 or less strings to concatenate.
that is the best answer!
25

Try:

String.Join("", test);

which should return a string joining the two elements together. "" indicates that you want the strings joined together without any separators.

answered Jan 30, 2011 at 5:54

2 Comments

Wouldn't that make "HelloWorld!" without a space between the words?
@jmort253 - The original string "Hello " in the question already had a trailing space. If the space was not already there, then you would be correct, and using " " as a separator would make more sense.
10

In the accepted answer, String.Join isn't best practice per its usage. String.Concat should have be used since OP included a trailing space in the first item: "Hello " (instead of using a null delimiter).

However, since OP asked for the result "Hello World!", String.Join is still the appropriate method, but the trailing whitespace should be moved to the delimiter instead.

// string[] test = new string[2];
// test[0] = "Hello ";
// test[1] = "World!";
string[] test = { "Hello", "World" }; // Alternative array creation syntax 
string result = String.Join(" ", test);
answered Nov 2, 2016 at 23:24

1 Comment

Points for explaining when one might be more appropriate than the other.
8

Aggregate can also be used for same.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
answered Nov 28, 2016 at 11:14

1 Comment

This is extremely wasteful method to implement String.Join due to multiple extra strings constructed. Please read stackoverflow.com/questions/217805/… for proper variant of Aggregate.
5
 string ConvertStringArrayToString(string[] array)
 {
 //
 // Concatenate all the elements into a StringBuilder.
 //
 StringBuilder strinbuilder = new StringBuilder();
 foreach (string value in array)
 {
 strinbuilder.Append(value);
 strinbuilder.Append(' ');
 }
 return strinbuilder.ToString();
 }
Kiquenet
15.2k36 gold badges152 silver badges250 bronze badges
answered Jan 30, 2011 at 5:55

5 Comments

This is just manually implementing string.Join(" ", array) (except yours adds a trailing space). Why not just use the one in the library?
@davidg - Ashwini is probably new. Learning to use existing tools and getting over the "I must do it myself" mentality of college takes some getting used to. It did for me. Eventually, people wonder why their colleagues are able to code circles around them, and then they see the value in code libraries and reuse.
whatever i remembered i tried to help that's all..if anybody has a better solution you are always free to post it.. @jmort:it's been 4 years since i'm working...i don't have the mentality of wht u r talking abt...anybody is not perfect...over the years of experience you learn ..hope u don't deny this fact..
@Ashwini - Wasn't trying to offend you. Just answering @davidg's question based on my experience working with different engineers.
Also, the concatenated string will have an extra space tacked onto the end of it. So this doesn't fully meet the question.
0

I used this way to make my project faster:

RichTextBox rcbCatalyst = new RichTextBox()
{
 Lines = arrayString
};
string text = rcbCatalyst.Text;
rcbCatalyst.Dispose();
return text;

RichTextBox.Text will automatically convert your array to a multiline string!

answered May 10, 2016 at 11:51

Comments

-10

Like this:

string str= test[0]+test[1];

You can also use a loop:

for(int i=0; i<2; i++)
 str += test[i];
jamesmortensen
34.2k11 gold badges103 silver badges124 bronze badges
answered Jan 30, 2011 at 5:56

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.