183 votes

string.split - par un délimiteur de plusieurs caractères

J'ai des difficultés à diviser une chaîne de caractères en c# avec un délimiteur de "][".

Par exemple la chaîne "abc][rfd][5][,][."

Devrait donner un tableau contenant ;
abc
rfd
5
,
.

Mais je n'arrive pas à le faire fonctionner, même si j'essaie RegEx, je n'arrive pas à obtenir un split sur le délimiteur.

EDIT : Essentiellement, je voulais résoudre ce problème sans avoir recours à une expression régulière. La solution que j'accepte est la suivante ;

string Delimiter = "][";  
var Result[] = StringToSplit.Split(new[] { Delimiter }, StringSplitOptions.None);

Je suis heureux de pouvoir résoudre cette question partagée.

299voto

Marc Gravell Points 482669

Pour montrer à la fois string.Split y Regex l'usage :

string input = "abc][rfd][5][,][.";
string[] parts1 = input.Split(new string[] { "][" }, StringSplitOptions.None);
string[] parts2 = Regex.Split(input, @"\]\[");

55voto

SwDevMan81 Points 22634
string tests = "abc][rfd][5][,][.";
string[] reslts = tests.Split(new char[] { ']', '[' }, StringSplitOptions.RemoveEmptyEntries);

25voto

seabass2020 Points 91

Une autre option :

Remplacer le délimiteur de la chaîne par un seul caractère, puis diviser sur ce caractère.

string input = "abc][rfd][5][,][.";
string[] parts1 = input.Replace("][","-").Split('-');

3voto

codevour Points 3246
Regex.Split("abc][rfd][5][,][.", @"\]\]");

1voto

Marco Concas Points 329

Une façon plus rapide d'utiliser directement un tableau sans chaîne mais avec une chaîne :

string[] StringSplit(string StringToSplit, string Delimitator)
{
    return StringToSplit.Split(new[] { Delimitator }, StringSplitOptions.None);
}

StringSplit("E' una bella giornata oggi", "giornata");
/* Output
[0] "E' una bella giornata"
[1] " oggi"
*/

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