преобразовать массив строк в строку

155

Я хотел бы преобразовать массив строк в одну строку.

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

Я хотел бы иметь что-то вроде "Hello World!"

Джон Сондерс
источник

Ответы:

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

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

string.Join("", test);
Дейв Уорд
источник
3
+1 - я удалил пробел в Join, чтобы исправить это, как указано @davidg
jmort253
Спасибо. Я не заметил конечного пробела, хотя копировал и вставлял его прямо в мой ответ.
Дэйв Уорд
2
Мне также нужно было установить разделитель между строками (кома и пробел), поэтому я использовал: var separator = ", "; string.Join(separator , test);
drpawelo
5
Отличный ответ. Хотя я бы предложил использовать string.Join(string.Empty, test)вместо использования empty-paranthesis.
теперь тот, кто не должен быть назван.
37

Несколько более быстрым вариантом, чем использование уже упомянутого Join()метода, является метод Concat () . Это не требует пустого параметра разделителя, как Join()делает. Пример:

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

string result = String.Concat(test);

следовательно, это, вероятно, быстрее.

Качественный катализатор
источник
1
ConcatЛучше, во внутренний код Join, он будет добавлять разделитель после каждого элемента. Но Concatне иметь таких кодов, это проще и прямее, чем Join. Это самый подходящий ответ.
Squirrel.Downy
22

Пытаться:

String.Join("", test);

который должен вернуть строку, соединяющую два элемента вместе. ""указывает, что вы хотите соединить строки без разделителей.

davidg
источник
Разве это не делает "HelloWorld!" без пробела между словами?
jmort253
1
@ jmort253 - Исходная строка "Hello "в вопросе уже имела завершающий пробел. Если бы места еще не было, вы были бы правы, и использование " "в качестве разделителя имело бы больше смысла.
Давидг
19

Простая строка .Concat () - это то, что вам нужно.

string[] test = new string[2];

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

string result = string.Concat(test);

Если вам также необходимо добавить разделитель (пробел, запятая и т. Д.), Следует использовать string.Join ().

string[] test = new string[2];

test[0] = "Red";
test[1] = "Blue";

string result = string.Join(",", test);

Если вам нужно выполнить это на строковом массиве с множеством элементов, чем string.Join () лучше с точки зрения производительности. Просто дайте "" (пустой) аргумент в качестве разделителя. StringBuilder также можно использовать для повышения производительности, но он сделает код немного длиннее.

ePandit
источник
Concatи Joinбыстрее, чем StringBuilderесли у вас есть 4 или менее строк для объединения.
Качественный катализатор
3

Aggregate также может быть использован для того же.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
Вивек Нуна
источник
1
Это чрезвычайно расточительный метод для реализации String.Joinиз-за создания нескольких дополнительных строк. Пожалуйста, прочитайте stackoverflow.com/questions/217805/… для правильного варианта Aggregate.
Алексей Левенков
1
    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();
    }
программист
источник
3
Это просто реализуется вручную string.Join(" ", array)(за исключением того, что ваш добавляет пробел). Почему бы просто не использовать тот в библиотеке?
Давидг
1
@davidg - Ашвини, вероятно, новый. Чтобы научиться использовать существующие инструменты и преодолеть менталитет колледжа «Я должен сделать это сам», нужно привыкнуть. Это для меня. В конце концов, люди задаются вопросом, почему их коллеги могут кодировать круги вокруг себя, а затем они видят значение в библиотеках кода и используют их повторно.
jmort253
что бы я ни вспомнил, я пытался помочь, вот и все ... если у кого-то есть лучшее решение, вы всегда можете опубликовать его .. @jmort: прошло 4 года с тех пор, как я работаю ... у меня нет менталитета ты говоришь примерно ... никто не совершенен ... за годы опыта ты учишься ... надеюсь, ты не отрицаешь этот факт ...
программист
@ Ашвини - не пытался тебя обидеть. Просто отвечаю на вопрос @ davidg, основываясь на моем опыте работы с разными инженерами.
jmort253
2
Кроме того, у объединенной строки будет дополнительное место, прикрепленное к ее концу. Так что это не полностью отвечает вопросу.
jmort253
0

Я использовал этот способ, чтобы сделать мой проект быстрее:

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

return text;

RichTextBox.Text автоматически преобразует ваш массив в многострочную строку!

Bamdad
источник
-1

В принятом ответе String.Join не лучшая практика для его использования. String.Concat следует использовать, поскольку OP включил в первый элемент завершающий пробел: «Hello» (вместо использования нулевого разделителя).

Однако, так как OP запросил результат «Hello World!», String.Join по-прежнему является подходящим методом, но завершающий пробел должен быть перемещен в разделитель.

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

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

string[] test = { "Hello", "World" }; // Alternative array creation syntax 
string result = String.Join(" ", test);
Сэр чарльз фейсхаггерсворт
источник
-4

Как это:

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

Вы также можете использовать цикл:

for(int i=0; i<2; i++)
    str += test[i];
Ханаан
источник