80 votes

couper toutes les chaînes dans un tableau

j'ai une chaîne qui vient comme:

 string email = "a@a.com, b@b.com, c@c.com";

je tiens à le diviser en un tableau de chaînes de caractères

si je fais ceci:

 string[] emails = email.Split(',');

je reçois des espaces à l'avant de chaque adresse e-mail (après le premier)

 emails[0] = "a@a.com"
 emails[1] = " b@b.com"
 emails[2] = " c@c.com"

quelle est la meilleure façon d'obtenir ce (soit un moyen de mieux analyser ou une façon de couper toutes les chaînes dans un tableau)?

 emails[0] = "a@a.com"
 emails[1] = "b@b.com"
 emails[2] = "c@c.com"

257voto

Bryan Watts Points 22810
emails.Split(',').Select(email => email.Trim()).ToArray()

41voto

nick2083 Points 1234

Vous pouvez aussi remplacer toutes les occurrences d'espaces, et ainsi éviter la boucle foreach:

string email = "a@a.com, b@b.com, c@c.com";    
string[] emails = email.Replace(" ", "").Split(',');

23voto

280Z28 Points 49515

Soit l'une des opérations suivantes serait de travailler. Je le recommande pour la première fois depuis plus de précision exprime l'adhésion à la chaîne.

string[] emails = email.Split(new string[] { ", " }, StringSplitOptions.None);
string[] emails = email.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);

11voto

skalb Points 1195

Vous pouvez utiliser Trim():

string email = "a@a.com, b@b.com, c@c.com";
string[] emails = email.Split(',');
emails = (from e in emails
          select e.Trim()).ToArray();

8voto

Brian Rasmussen Points 68853

Utiliser Regex.Split afin d'éviter le parage

var emails = Regex.Split(email, @",\s*");

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