Supprimer les virgules supplémentaires de la chaîne après avoir utilisé Ssortingng.Join pour convertir le tableau en chaîne (C #)

Question rapide ici. Je convertis un tableau en une chaîne en utilisant Ssortingng.Join. Un petit problème est que, dans le tableau, certaines positions d’index seront vides. Un exemple est ci-dessous:

array[1] = "Firstcolumn" array[3] = "Thirdcolumn" 

En utilisant Ssortingng.Join (“,”, array); je vais obtenir les informations suivantes:

Première colonne, troisième colonne

Notez le supplément. Comment puis-je supprimer les virgules supplémentaires de la chaîne ou, idéalement, ne pas inclure d’index vierges lors de l’utilisation de Ssortingng.Join?

Essaye ça :):

 var res = ssortingng.Join(",", array.Where(s => !ssortingng.IsNullOrEmpty(s))); 

Cela ne rejoindra que les chaînes qui ne sont pas null ou "" .

Une solution simple serait d’utiliser linq en filtrant les éléments vides avant de les joindre.

 // .net 3.5 ssortingng.Join(",", array.Where(item => !ssortingng.IsNullOrEmpty(item)).ToArray()); 

Dans .NET 4.0, vous pouvez également utiliser ssortingng.IsNullOrWhiteSpace si vous souhaitez également filtrer les éléments vierges ou composés uniquement d’espaces blancs (notez que dans .NET 4.0, vous n’avez pas besoin d’appeler ToArray dans ce cas). ):

 // .net 4.0 ssortingng.Join(",", array.Where(item => !ssortingng.IsNullOrWhiteSpace(item))); 

Vous pouvez utiliser linq pour supprimer les champs vides.

 var joinedSsortingng = Ssortingng.Join(",", array.Where(c => !ssortingng.IsNullOrEmpty(c)); 
 Ssortingng.Join(",", array.Where(w => !ssortingng.IsNullOrEmpty(w)); 

Méthode d’extension:

 public static ssortingng ToSsortingngWithoutExtraCommas(this object[] array) { SsortingngBuilder sb = new SsortingngBuilder(); foreach (object o in array) { if ((o is ssortingng && !ssortingng.IsNullOrEmpty((ssortingng)o)) || o != null) sb.Append(o.ToSsortingng()).Append(","); } sb.Remove(sb.Length - 1, 1); return sb.ToSsortingng(); } 

Solution d’expression régulière:

 yourSsortingng = new Regex(@"[,]{2,}").Replace(yourSsortingng, @","); 
 ssortingng.Join(",", Array.FindAll(array, a => !Ssortingng.IsNullOrEmpty(a))); 

Celui-ci, ça va? Contre et avantages par rapport à la solution LINQ? Au moins c’est plus court.

 ssortingng.Join(",", ssortingng.Join(",", array).Split({","}, SsortingngSplitOptions.RemoveEmptyEnsortinges)); 

v (‘_’) V

Méthode d’extension simple

 namespace System { public static class Extenders { public static ssortingng Join(this ssortingng separator, bool removeNullsAndWhiteSpaces, params ssortingng[] args) { return removeNullsAndWhiteSpaces ? ssortingng.Join(separator, args?.Where(s => !ssortingng.IsNullOrWhiteSpace(s))) : ssortingng.Join(separator, args); } public static ssortingng Join(this ssortingng separator, bool removeNullsAndWhiteSpaces, IEnumerable args) { return removeNullsAndWhiteSpaces ? ssortingng.Join(separator, args?.Where(s => !ssortingng.IsNullOrWhiteSpace(s))) : ssortingng.Join(separator, args); } } } 

Usage:

 var str = ".".Join(true, "a", "b", "", "c"); //or var arr = new[] { "a", "b", "", "c" }; str = ".".Join(true, arr);