/ / "Inteligentny" sposób łączenia łańcuchów? - c #, string, konkatenacja

"Inteligentny" sposób łączenia łańcuchów? - c #, string, konkatenacja

Szukam "inteligentnego" sposobu łączenia sięciągi z separatorem. Oczywiście mógłbym to wszystko zakodować, więc zastanawiam się, czy istnieje prosty sposób (LINQ, a może jakaś inna metoda, której nie znam), aby to zrobić.

Powiedzmy, że mam zestaw ciągów znaków (może to być dowolna liczba ciągów znaków):

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

I chcę połączyć łańcuchy tak, aby wynik był podobny a, b, c. Jest to dość łatwe, ale tutaj jest niespodzianka: jeśli któryś z łańcuchów jest pusty, nie chcę dodatkowego przecinka.

Na przykład, jeśli jest to mój zestaw:

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

Chcę, żeby wynik był b, c (Lub tylko c Jeśli oba s1 i s2 są puste).

Czy istnieje prosty sposób na zrobienie tego?

Odpowiedzi:

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

2 dla odpowiedzi nr 2

Posługiwać się 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 dla odpowiedzi nr 3
string.Join(",", SOME_STRING_COLLECTION.Where(x => !string.IsNullOrWhiteSpace(x)));