web-dev-qa-db-fra.com

Fractionner une chaîne séparée par des virgules tout en supprimant les espaces et les entrées vides

Je voulais convertir une chaîne séparée par des virgules en un tableau de chaînes et également supprimer les espaces et les entrées vides. Par exemple, étant donné l'entrée:

string valueString = "sam, mike,   , ,john  , Tom and jerry  , ";

Le résultat attendu serait les valeurs suivantes (ajustées, bien sûr):

sam
mike
john
Tom and Jerry

J'ai essayé la ligne de code suivante qui limite les valeurs, mais cela ne permet pas de supprimer les entrées "vides":

valueString.Split(',').Select(sValue => sValue.Trim()).ToArray();

Quelle serait la meilleure façon de réduire l’entrée et de nettoyer et vider les entrées qui pourraient en résulter?

17
Sameer

Utiliser Trim avec StringSplitOptions.RemoveEmptyEntries ne fonctionne pas car " " n'est pas considéré comme une entrée vide. Vous devez faire un fractionnement normal, couper chaque élément, puis filtrer les chaînes vides.

valueString.Split(',')
    .Select(x => x.Trim())
    .Where(x => !string.IsNullOrWhiteSpace(x))
    .ToArray();
38
Anthony

En s’appuyant sur la réponse d’Anthony, cela le reconvertira également en une chaîne délimitée par des virgules:

valueString = string.Join(",", valueString.Split(',')
    .Select(x => x.Trim())
    .Where(x => !string.IsNullOrWhiteSpace(x))
    .ToArray())
0
user3186206