Vorrei convertire un array di stringhe in una singola stringa.
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
Vorrei avere qualcosa come "Hello World!"
Vorrei convertire un array di stringhe in una singola stringa.
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
Vorrei avere qualcosa come "Hello World!"
Risposte:
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string.Join("", test);
var separator = ", ";
string.Join(separator , test);
string.Join(string.Empty, test)
piuttosto che usare un empty-paranthesis
.
Un'opzione leggermente più veloce rispetto all'utilizzo del Join()
metodo già menzionato è il metodo Concat () . Non richiede un parametro delimitatore vuoto come Join()
fa. Esempio:
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string result = String.Concat(test);
quindi è probabilmente più veloce.
Concat
è meglio, nel codice interno di Join
, aggiungerà il separatore dopo ogni elemento. Ma Concat
non hanno tali codici, è più semplice e diretto di Join
. Questa è la risposta adatta.
Provare:
String.Join("", test);
che dovrebbe restituire una stringa che unisce i due elementi insieme. ""
indica che si desidera unire le stringhe senza separatori.
"Hello "
nella domanda aveva già uno spazio finale. Se lo spazio non fosse già presente, allora avresti ragione e l'utilizzo " "
come separatore avrebbe più senso.
Una semplice stringa.Concat () è ciò di cui hai bisogno.
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string result = string.Concat(test);
Se è necessario aggiungere anche un separatore (spazio, virgola ecc.), Utilizzare string.Join ().
string[] test = new string[2];
test[0] = "Red";
test[1] = "Blue";
string result = string.Join(",", test);
Se devi eseguire ciò su una matrice di stringhe con hundereds di elementi rispetto a string.Join () è meglio dal punto di vista delle prestazioni. Fornisci semplicemente un argomento "" (vuoto) come separatore. StringBuilder può anche essere utilizzato per motivi di prestazioni, ma renderà il codice un po 'più lungo.
Concat
e Join
sono più veloci di StringBuilder
se hai 4 o meno stringhe da concatenare.
Aggregate
può anche essere usato per lo stesso.
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
String.Join
causa di più stringhe extra costruite. Si prega di leggere stackoverflow.com/questions/217805/… per la variante corretta di Aggregate
.
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();
}
string.Join(" ", array)
(tranne il tuo aggiunge uno spazio finale). Perché non usare solo quello nella libreria?
Nella risposta accettata, String.Join non è la migliore pratica per il suo utilizzo. String.Concat avrebbe dovuto essere usato poiché OP includeva uno spazio finale nel primo elemento: "Hello" (invece di usare un delimitatore null).
Tuttavia, poiché OP ha richiesto il risultato "Hello World!", String.Join è ancora il metodo appropriato, ma lo spazio bianco finale deve essere spostato nel delimitatore.
// string[] test = new string[2];
// test[0] = "Hello ";
// test[1] = "World!";
string[] test = { "Hello", "World" }; // Alternative array creation syntax
string result = String.Join(" ", test);