web-dev-qa-db-fra.com

Meilleure façon d'ajouter la nouvelle ligne à la chaîne sauf la dernière

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.

26
Justin

Vous pouvez utiliser String.Join .

string.Join("\n", errorMessages);
44
Paul Fleming

Utiliser join

string.Join(System.Environment.NewLine, errorMessages);
63
MrFox
using System;

string.Join(Environment.NewLine, errorMessages);
14
Vishal Suthar

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);
3
Ioannis Karadimas