93 votes

Supprimer les valeurs vides d'un tableau en C#

Comment supprimer les valeurs vides d'un tableau ?

Par exemple :

string[] test={"1","","2","","3"};

Dans ce cas, existe-t-il une méthode pour supprimer les valeurs vides du tableau en utilisant C# ?

A la fin, je veux obtenir un tableau dans ce format :

test={"1","2","3"};

ce qui signifie que 2 valeurs sont supprimées du tableau et que j'en obtiens finalement 3.

1 votes

Comment obtenez-vous le contenu du tableau, peut-être y a-t-il quelque chose à faire à ce niveau ?

238voto

alexfreiria Points 21515

Si vous utilisez .NET 3.5+, vous pouvez utiliser LINQ (Language INtegrated Query).

test = test.Where(x => !string.IsNullOrEmpty(x)).ToArray();

2 votes

Il faudrait probablement utiliser String.IsNullOrEmpty pour être sûr, sinon les valeurs nulles se retrouveront dans le nouveau tableau.

4 votes

J'ai dû ajouter x.Trim() pour me débarrasser des valeurs qui ne contenaient que des espaces : test = test.Where(x => !string.IsNullOrEmpty(x.Trim())).ToArray() ;

8 votes

String.IsNullOrWhiteSpace fonctionnerait également, ce qui éviterait d'avoir à découper chaque valeur.

38voto

ChrisWue Points 12817

Vous pouvez utiliser Linq si vous utilisez .NET 3.5 ou une version ultérieure :

 test = test.Where(x => !string.IsNullOrEmpty(x)).ToArray();

Si vous ne pouvez pas utiliser Linq, vous pouvez procéder comme suit :

var temp = new List<string>();
foreach (var s in test)
{
    if (!string.IsNullOrEmpty(s))
        temp.Add(s);
}
test = temp.ToArray();

5voto

J'écris le code ci-dessous pour supprimer la valeur vide dans la chaîne du tableau.

string[] test={"1","","2","","3"};
test= test.Except(new List<string> { string.Empty }).ToArray();

3voto

Ateeq Points 395

Je préfère utiliser deux options, les espaces blancs et les espaces vides :

test = test.Where(x => !string.IsNullOrEmpty(x)).ToArray();
test = test.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();

0 votes

Bonne réponse : ceci est pertinent si, par exemple, vous analysez un fichier CSV (ou une chaîne) et que vous vous retrouvez avec des champs remplis d'espaces blancs.

4 votes

La méthode IsNullOrWhiteSpace() considère en fait qu'une chaîne vide (sans espace) contient un espace. Il est donc redondant d'utiliser à la fois IsNullOrEmpty() et IsNullOrWhiteSpace().

1 votes

Test = test.Where(x => !string.IsNullOrEmpty(x.Trim())).ToArray() ; fait la même chose et n'a pas besoin d'être appelé deux fois.

2voto

Tyler Wayne Points 206

Il s'agit peut-être d'une ancienne version, mais vous pouvez essayer

string[] test = new[] { "1", "", "2", "", "3" };
test = string.Join(",", test).Split(new string[] { "," }, Stringsplitoptions.Removeemptyentries);

Joignez le tableau et divisez-le à nouveau en supprimant les éléments vides.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X