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 № 1var 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)));