Un programme a des utilisateurs qui saisit une chaîne délimitée par des virgules dans un tableau: Il peut y avoir des espaces entre les virgules ou peut-être pas. p> si cette chaîne Était simplement Quelle est la meilleure façon de le nettoyer? < / p> p> Split () code> sur la virgule, alors certains des éléments du tableau peuvent avoir des espaces avant ou après eux. P>
7 Réponses :
Question OP n'a pas eu d'espaces, mais vous avez raison, cela ne fonctionnera pas pour des valeurs avec des espaces (voir David Andres Répondre pour un meilleur remplacement)
diviser les éléments de la virgule: puis utilisez p>
Vous pouvez diviser à la virgule ou dans l'espace et retirer les entrées vides (celles entre une virgule et un espace): modifier:
Cependant, comme cela ne fonctionne pas avec des valeurs contenant des espaces, vous pouvez plutôt diviser les variations possibles si vos valeurs peuvent contenir des espaces: P> string[] values = delimitedString.Split(new string[]{" , ", " ,", ", ", ","}, StringSplitOptions.None);
Comme d'autres ont souligné ma réponse, cela aura des problèmes avec des valeurs espacées "Football américain, tennis de table"
@Swdevman: Oui, vous avez raison. Une variation ajoutée qui gère des valeurs contenant des espaces.
En ce qui concerne votre deuxième solution: il ne sera pas possible de répertorier toutes les combinaisons possibles des espaces et des virgules (par exemple 3 espaces, une virgule, 2 espaces, ...)
string s = "ping pong, table tennis, water polo";
string[] myArray = s.Split(',');
for (int i = 0; i < myArray.Length; i++)
myArray[i] = myArray[i].Trim();
That will preserve the spaces in the entries.
Vous pouvez utiliser regex.split pour ceci: le regex \ s *, \ s * code> peut être lu comme: "match zéro ou plus de caractères d'espace blanc, suivis d'une virgule suivie de zéro ou plus d'espace blanc " em>. p> p>
Je voudrais tout d'abord diviser un texte en ",", puis utilisez la méthode de la garniture pour supprimer les espaces sur le début et la fin de chaque chaîne. Cela ajoutera une prise en charge de la chaîne avec des espaces à votre code. P>
string[] values = delimitedString.Split(',').Select(s => s.Trim()).ToArray();
Il suffit d'intéressant: l'auteur est membre pour un an et a posé une question à 462 questions. Étrange que quelqu'un a une nouvelle question tous les jours ...