String-Array in String konvertieren

154

Ich möchte ein String-Array in einen einzelnen String konvertieren.

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

Ich hätte gerne so etwas wie "Hallo Welt!"

John Saunders
quelle

Antworten:

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

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

string.Join("", test);
Dave Ward
quelle
3
+1 - Ich habe das Leerzeichen im Join entfernt, um dies zu korrigieren, wie von @davidg
jmort253 am
Vielen Dank. Ich habe das nachgestellte Leerzeichen nicht bemerkt, obwohl ich es direkt in meine Antwort eingefügt habe.
Dave Ward
2
Ich musste auch ein Trennzeichen zwischen meine Zeichenfolgen (Koma und Leerzeichen) setzen, damit ich var separator = ", "; string.Join(separator , test);
Folgendes
5
Gute Antwort. Ich würde jedoch vorschlagen, eine zu verwenden, string.Join(string.Empty, test)anstatt eine zu verwenden empty-paranthesis.
Jetzt wer nicht genannt werden darf.
36

Eine etwas schnellere Option als die bereits erwähnte Verwendung der Join()Methode ist die Concat () -Methode. Es ist kein leerer Begrenzerparameter Join()erforderlich. Beispiel:

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

string result = String.Concat(test);

daher ist es wahrscheinlich schneller.

Qualitätskatalysator
quelle
1
Concatist besser, im inneren Code von Joinwird nach jedem Element ein Trennzeichen angehängt. Aber Concatkeine solchen Codes haben, es ist einfacher und direkter als Join. Dies ist die beste Antwort.
Squirrel.Downy
22

Versuchen:

String.Join("", test);

Dies sollte eine Zeichenfolge zurückgeben, die die beiden Elemente miteinander verbindet. ""Gibt an, dass die Zeichenfolgen ohne Trennzeichen zusammengefügt werden sollen.

Davidg
quelle
Wäre das nicht "HelloWorld!" ohne ein Leerzeichen zwischen den Wörtern?
jmort253
1
@ jmort253 - Die ursprüngliche Zeichenfolge "Hello "in der Frage hatte bereits ein Leerzeichen. Wenn der Platz noch nicht vorhanden wäre, wären Sie korrekt, und die Verwendung " "als Trennzeichen wäre sinnvoller.
Davidg
19

Eine einfache Zeichenfolge.Concat () ist das, was Sie brauchen.

string[] test = new string[2];

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

string result = string.Concat(test);

Wenn Sie auch einen Trennzeichen (Leerzeichen, Komma usw.) hinzufügen müssen, sollte string.Join () verwendet werden.

string[] test = new string[2];

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

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

Wenn Sie dies für ein String-Array mit Hunderten von Elementen als string ausführen müssen. Join () ist aus Sicht der Leistung besser. Geben Sie einfach ein "" (leeres) Argument als Trennzeichen an. StringBuilder kann auch aus Gründen der Leistung verwendet werden, verlängert jedoch den Code etwas.

ePandit
quelle
Concatund Joinsind schneller als die, StringBuilderwenn Sie 4 oder weniger Zeichenfolgen verketten müssen.
Qualitätskatalysator
3

Aggregate kann auch dafür verwendet werden.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
vivek nuna
quelle
1
Die Implementierung dieser Methode ist äußerst verschwenderisch, String.Joinda mehrere zusätzliche Zeichenfolgen erstellt wurden. Bitte lesen Sie stackoverflow.com/questions/217805/… für die richtige Variante von Aggregate.
Alexei Levenkov
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();
    }
Programmierer
quelle
3
Dies wird nur manuell implementiert string.Join(" ", array)(außer bei Ihrem wird ein nachgestellter Speicherplatz hinzugefügt). Warum nicht einfach die in der Bibliothek verwenden?
Davidg
1
@davidg - Ashwini ist wahrscheinlich neu. Das Erlernen des Gebrauchs vorhandener Werkzeuge und das Überwinden der "Ich muss es selbst tun" -Mentalität des College ist gewöhnungsbedürftig. Es hat für mich getan. Schließlich fragen sich die Leute, warum ihre Kollegen Kreise um sie herum codieren können, und dann sehen sie den Wert in Codebibliotheken und deren Wiederverwendung.
jmort253
Was auch immer ich mich erinnerte, ich habe versucht zu helfen, das ist alles. Wenn jemand eine bessere Lösung hat, kannst du sie jederzeit posten. @jmort: Es ist 4 Jahre her, seit ich arbeite. Ich habe nicht die Mentalität von wht Du redest über ... irgendjemand ist nicht perfekt ... über die Jahre der Erfahrung, die du lernst ... hoffentlich leugnest du diese Tatsache nicht ...
Programmierer
@ Ashwini - Ich habe nicht versucht, dich zu beleidigen. Ich beantworte nur die Frage von @ davidg, basierend auf meiner Erfahrung in der Arbeit mit verschiedenen Ingenieuren.
jmort253
2
Außerdem wird an der verketteten Zeichenfolge ein zusätzlicher Platz am Ende angeheftet. Damit ist die Frage nicht vollständig erfüllt.
jmort253
0

Ich habe diesen Weg benutzt, um mein Projekt schneller zu machen:

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

return text;

RichTextBox.Text konvertiert Ihr Array automatisch in eine mehrzeilige Zeichenfolge!

Bamdad
quelle
-1

In der akzeptierten Antwort ist String.Join keine bewährte Methode für die Verwendung. String.Concat sollte verwendet werden, da OP im ersten Element ein nachfolgendes Leerzeichen enthält: "Hallo" (anstelle eines Nulltrennzeichens).

Da OP jedoch nach dem Ergebnis "Hello World!" Abfragt, ist String.Join immer noch die geeignete Methode, aber das nachfolgende Leerzeichen sollte stattdessen in das Trennzeichen verschoben werden.

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

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

string[] test = { "Hello", "World" }; // Alternative array creation syntax 
string result = String.Join(" ", test);
Sir Charles Facehuggersworth
quelle
-4

So was:

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

Sie können auch eine Schleife verwenden:

for(int i=0; i<2; i++)
    str += test[i];
Kanaan
quelle