Je cherchais la meilleure façon/la plus propre d'itérer sur une liste de chaînes, puis de créer une seule chaîne de celles séparées par des sauts de ligne (à l'exception de la dernière). Ainsi:
String 1
String 2
String 3
J'ai écrit deux boucles ici qui ont une nouvelle ligne à la fin de la chaîne (que je veux éviter) et une autre qui n'en a pas. Celui-ci ne me semble pas simplement "propre". Je pense qu'il y aurait un moyen plus simple de le faire pour que la logique soit presque aussi simple que dans l'exemple qui a une nouvelle ligne à la fin de la chaîne.
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;
}
}
C'est peut-être un vœu pieux, mais j'aurais pensé que c'était un événement assez courant pour justifier une meilleure façon d'atteindre mon objectif.
Vous pouvez utiliser String.Join .
string.Join("\n", errorMessages);
Utiliser join
string.Join(System.Environment.NewLine, errorMessages);
using System;
string.Join(Environment.NewLine, errorMessages);
Le moyen le plus court consiste à utiliser .Aggregate(...)
ou String.Join(...)
.
var messages = errorMessages.Aggregate((x, y) => x + Environment.NewLine + y);
Ou
var messages = String.Join(Environment.NewLine, errorMessages);