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!"

9 Answers 9

418
string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string.Join("", test);
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.

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.

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.

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);

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);

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();
    }

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!

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];

Comments

Your Answer

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