2013-01-03 7 views
10

Stavo cercando il modo migliore/più pulito per scorrere su un elenco di stringhe e quindi creare una singola stringa di quelle separate da una nuova riga (eccetto l'ultima). In questo modo:Il modo migliore per aggiungere una nuova riga alla stringa tranne l'ultima

String 1 
String 2 
String 3 

Ho scritto due cicli qui che ha una nuova riga alla fine della stringa (che voglio evitare) e un altro che non lo fa. Quello non solo non mi sembra "pulito". Penserei che ci sarebbe un modo più semplice per farlo in modo che la logica sia quasi semplice come nell'esempio che ha una nuova riga alla fine della stringa.

List<string> errorMessages = new List<string>(); 
string messages = ""; 

//Adds newline to last string. Unwanted. 
foreach(string msg in errorMessages) 
{ 
    messages += msg + "\n"; 
} 

messages = ""; 
bool first = true; 

//Avoids newline on last string 
foreach (string msg in errorMessages) 
{ 
    if(first) 
    { 
     first = false; 
     messages = msg; 
    } 
    else 
    { 
     messages += "\n" + msg; 
    } 
} 

Forse è un pio desiderio, ma avrei pensato che questo era un evento abbastanza comune per giustificare un modo migliore per raggiungere il mio obiettivo.

risposta

26

È possibile utilizzare String.Join.

string.Join("\n", errorMessages); 
+1

Grazie, che è esattamente quello che volevo. – Justin

32

Usa unirsi

string.Join(System.Environment.NewLine, errorMessages); 
+4

+1 per 'System.Environment.NewLine'. –

3

La via più breve è quello di utilizzare .Aggregate(...) o String.Join(...).

var messages = errorMessages.Aggregate((x, y) => x + Environment.NewLine + y); 

O

var messages = String.Join(Environment.NewLine, errorMessages); 
6
using System; 

string.Join(Environment.NewLine, errorMessages); 
Problemi correlati