Je cherche un moyen "intelligent" de concaténerchaînes avec un séparateur. Évidemment, je pourrais coder tout cela moi-même, donc je me demande s’il existe un moyen simple (LINQ ou peut-être une autre méthode que je ne connais pas) de le faire.
Dites que j'ai un ensemble de chaînes (cela peut être un nombre quelconque de chaînes):
string s1 = "a";
string s2 = "b";
string s3 = "c";
Et je veux concaténer les chaînes de telle sorte que le résultat est quelque chose comme a, b, c
. C’est assez facile, mais voici le problème: si l’une des chaînes est vide, je ne veux pas de virgule supplémentaire.
Par exemple, si c'est mon cas:
string s1 = "";
string s2 = "b";
string s3 = "c";
Je veux que le résultat soit b, c
(ou juste c
si les deux s1
et s2
sont vides).
Y a-t-il un moyen simple de faire cela?
Réponses:
1 pour la réponse № 1var list = new List<string>{"a","b","", null};
var res = string.Join(", ", list.Where(s => !string.IsNullOrEmpty(s)));
2 pour la réponse № 2
Utilisation string.Join (...):
using System;
using System.Linq;
using System.Collections.Generic;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
string space = " ";
string a = "One";
string b = "Two";
string c = "Three";
var filteredList = (new List<string> { space, a, b, c }).Where(x => !string.IsNullOrWhiteSpace(x));
string abc = string.Join(", ", filteredList);
Console.WriteLine(abc); //One, Two, Three
Console.ReadKey();
}
}
}
2 pour la réponse № 3
string.Join(",", SOME_STRING_COLLECTION.Where(x => !string.IsNullOrWhiteSpace(x)));