2009-08-20 4 views
38

Есть ли простой способ преобразования массива строк в конкатенационную строку?Преобразование строкового массива в конкатенацию в C#

К примеру, у меня есть массив строк:

new string[]{"Apples", "Bananas", "Cherries"}; 

И я хочу, чтобы получить одну строку:

"Apples,Bananas,Cherries" 

Или "Apples&Bananas&Cherries" или "Apples\Bananas\Cherries"

ответ

70

прост ...

string[] theArray = new string[]{"Apples", "Bananas", "Cherries"}; 
string s = string.Join(",",theArray); 
+5

Эй, я знал это на самом деле. Сегодня в офисе очень жарко, и у меня не было кофе! Благодарю. –

+1

Хотя это немного странно. Он считает, что это скорее действие над массивом, чем действие над строкой, поэтому для меня было бы «естественным» искать такую ​​функцию в классе массива. Но спасибо, я не знал, что существует такой способ присоединиться к строке [] (поэтому больше нет для построения)! +1 – Gertjan

+1

Но он применим только к 'string []', а не к каким-либо другим, - поэтому он не вписывается в «регулярную» реализацию массива. Но вы можете добавить его как метод расширения C# 3.0 * * в эту строку [] '. –

10

Очевидным выбором является, конечно, метод String.Join.

Вот LINQy альтернатива:

string.Concat(fruit.Select((s, i) => (i == 0 ? "" : ",") + s).ToArray()) 

(не очень полезно, поскольку это стоит, как это делает то же самое, как метод Join, но, возможно, для расширения, где метод не может идти, например, чередующиеся сепараторы .. .)

0

Вы можете использовать Aggregate, он применяет функцию аккумулятора по последовательности.

string[] test = new string[]{"Apples", "Bananas", "Cherries"}; 
char delemeter = ','; 
string joinedString = test.Aggregate((prev, current) => prev + delemeter + current); 
Смежные вопросы