2017-08-24 1 views
2

Je suis à la recherche d'un moyen "intelligent" de concaténer les chaî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."Smart" façon de concaténer les chaînes?

Dire que j'ai un ensemble de chaînes (cela peut être un certain nombre de chaînes):

string s1 = "a"; 
string s2 = "b"; 
string s3 = "c"; 

Et je veux concaténer les chaînes telles que le résultat est quelque chose comme a, b, c. C'est assez facile, mais voici la torsion: si l'une des chaînes est vide, je ne veux pas la virgule supplémentaire.

Par exemple, si ceci est mon jeu:

string s1 = ""; 
string s2 = "b"; 
string s3 = "c"; 

Je veux que le résultat soit b, c (ou tout simplement c si les deux s1 et s2 sont vides).

Existe-t-il un moyen simple de faire cela?

+3

string.join ......... peut-être avec un .où (s => String.IsNullOrEmpty de (s)!) Jeté – pm100

+0

@ pm100 Cela sonne bien - pouvez-vous répondre avec un exemple? – derekantrican

Répondre

1
var list = new List<string>{"a","b","", null}; 
var res = string.Join(", ", list.Where(s => !string.IsNullOrEmpty(s))); 
+0

Super! Très simple! (Je l'ai édité pour fixer la syntaxe et la capitalisation pour vous) – derekantrican

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
string.Join(",", SOME_STRING_COLLECTION.Where(x => !string.IsNullOrWhiteSpace(x)));