La méthode VB.NET String.Join(separator, stringArray)
est similaire à l'implode de PHP, mais tous les éléments nuls du tableau sont remplacés par une chaîne vide, de sorte que c:
Dim myArray() as String = { "a", null, "c" }
Console.WriteLine(String.Join(", ", myArray));
// Prints "a, , c"
Existe-t-il un moyen simple de concaténer un ensemble de chaînes avec un séparateur qui ignore les chaînes vides?
Je n'ai pas nécessairement besoin d'utiliser des tableaux ou String.Join ou quoi que ce soit d'autre. J'ai juste besoin des transformations suivantes:
("a", "b", "c") --> "a, b, c"
("a", null, "c") --> "a, c"
Réponses:
VB.NET
String.Join(",", myArray.Where(Function(s) Not String.IsNullOrEmpty(s)))
C #
String.Join(",", myArray.Where(s => !string.IsNullOrEmpty(s)))
la source
Array.FindAll(myArray, Function(s) Not String.IsNullOrEmpty(s))
pouvez-vous changer votre réponse ou expliquer laWhere
déclaration?Where
la méthode est deSystem.Linq
, msdn.microsoft.com/en-us/library/bb534803.aspxpour C # ==>
String.Join(",", arr.Where(s => !String.IsNullOrEmpty(s)));
la source
Pour le faire en .NET 2.0 (pas de LINQ), par exemple pour SQL-Server ReportingServices sans avoir à écrire une fonction pour cela:
VB.NET
C # (pour ceux qui arrivent de Google et ne recherchent pas VB.NET)
Cela suppose que le retour arrière du caractère ne se produit pas dans vos chaînes (devrait généralement être vrai, car vous ne pouvez pas simplement entrer ce caractère au clavier).
De plus, si vous récupérez les valeurs d'une base de données, c'est encore plus simple, car vous pouvez le faire directement en SQL:
PostgreSQL et MySQL:
Et même avec le glorieux MS-SQL-Server, c'est possible (PS: c'est du sarcasme):
la source
Essayez ce qui suit:
la source
Cela fonctionne bien pour VB.NET
Join(*yourArray*.Where(Function(s) Not String.IsNullOrEmpty(s)).ToArray(), *yourDelimiter*)
la source