In C#

2009-08-20 5 views
38

ein Zeichenfolgenarray in eine concantenated Zeichenfolge konvertieren Gibt es eine einfache Möglichkeit, ein Zeichenfolgenarray in eine concantenated Zeichenfolge zu konvertieren?In C#

Zum Beispiel habe ich ein String-Array:

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

Und ich möchte einen einzelnen String erhalten:

"Apples,Bananas,Cherries" 

Oder "Apples&Bananas&Cherries" oder "Apples\Bananas\Cherries"

Antwort

70

eine einfache ...

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

Hey, das wusste ich wirklich. Es ist nur sehr heiß im Büro heute und ich hatte keinen Kaffee! Vielen Dank. –

+1

Obwohl es sich ein bisschen seltsam anfühlt. Es ist eher eine Aktion für ein Array als eine Aktion für eine Zeichenfolge, daher wäre es "natürlicher" für mich, nach einer solchen Funktion in der Array-Klasse zu suchen. Aber danke, ich wusste nicht, dass es so einen Weg gibt, sich einer Saite anzuschließen (also nicht mehr für Konstruktionen)! +1 – Gertjan

+1

Aber es würde nur für 'string []' gelten, nicht für andere - also passt es nicht sauber in die "normale" Array-Implementierung. Sie könnten es jedoch als eine C# 3.0 * -Erweiterungsmethode * zu 'this string []' hinzufügen. –

10

Die offensichtliche Wahl ist natürlich die String.Join Methode.

Hier ist eine LINQy Alternative:

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

(Nicht wirklich nützlich, wie es steht, wie es das gleiche ist wie die Methode Join tut, aber vielleicht für die Erweiterung, wo die Methode kann nicht gehen, wie alternierende Separatoren .. .)

0

Sie können Aggregate verwenden, es wendet eine Akkumulatorfunktion über eine Sequenz an.

string[] test = new string[]{"Apples", "Bananas", "Cherries"}; 
char delemeter = ','; 
string joinedString = test.Aggregate((prev, current) => prev + delemeter + current);