10
votes

Quel est le moyen le plus propre de supprimer tous les espaces supplémentaires d'une chaîne délimitée de virgule d'entrée d'utilisateur dans un tableau

Un programme a des utilisateurs qui saisit une chaîne délimitée par des virgules dans un tableau: xxx

Il peut y avoir des espaces entre les virgules ou peut-être pas.

si cette chaîne Était simplement Split () sur la virgule, alors certains des éléments du tableau peuvent avoir des espaces avant ou après eux.

Quelle est la meilleure façon de le nettoyer? < / p>


1 commentaires

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 ...


7 Réponses :



1
votes

diviser les éléments de la virgule: xxx

puis utilisez xxx


0 commentaires

3
votes

Vous pouvez diviser à la virgule ou dans l'espace et retirer les entrées vides (celles entre une virgule et un espace): xxx pré>

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);


3 commentaires

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, ...)



3
votes
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.

0 commentaires

18
votes

Vous pouvez utiliser regex.split pour ceci: xxx

le regex \ s *, \ s * 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 ".


0 commentaires

0
votes

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.


0 commentaires

8
votes
string[] values = delimitedString.Split(',').Select(s => s.Trim()).ToArray();

0 commentaires