C # Diviser une chaîne par une autre chaîne

J’ai utilisé la méthode Split() pour fractionner des chaînes, mais cela ne semble fonctionner que si vous divisez une chaîne par un caractère. Existe-t-il un moyen de fractionner une ssortingng , une autre chaîne étant la division par paramètre? J’ai essayé de convertir le séparateur en un tableau de caractères, sans succès.

En d’autres termes, j’aimerais diviser la ssortingng :

THExxQUICKxxBROWNxxFOX

par xx et retourner un tableau avec des valeurs:

LE RENARD BRUN RAPIDE

Pour diviser par une chaîne, vous devrez utiliser la surcharge du tableau de chaînes .

 ssortingng data = "THExxQUICKxxBROWNxxFOX"; return data.Split(new ssortingng[] { "xx" }, SsortingngSplitOptions.None); 

Il y a une surcharge de Split qui prend des chaînes.

 "THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, SsortingngSplitOptions.None); 

Vous pouvez utiliser l’un de ces SsortingngSplitOptions

  • None – La valeur de retour inclut des éléments de tableau contenant une chaîne vide
  • RemoveEmptyEnsortinges – La valeur de retour n’inclut pas les éléments de tableau contenant une chaîne vide

Donc, si la chaîne est “THExxQUICKxxxxxBROWNxxFOX”, SsortingngSplitOptions.None renverra une entrée vide dans le tableau pour la partie “xxxx” alors que SsortingngSplitOptions.RemoveEmptyEnsortinges ne le sera pas.

 Regex.Split(ssortingng,"xx") 

est la façon dont je le fais habituellement. Bien sûr, vous aurez besoin d’un

 using System.Text.RegularExpressions; 

mais encore une fois j’ai besoin de cette lib tout le temps.

Il y a une surcharge de Ssortingng.Split pour cela:

 "THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, SsortingngSplitOptions.None); 

J’aime généralement utiliser ma propre extension pour cela:

 ssortingng data = "THExxQUICKxxBROWNxxFOX"; var dataspt = data.Split("xx"); //>THE QUICK BROWN FOX //the extension class must be declared as static public static class SsortingngExtension { public static ssortingng[] Split(this ssortingng str, ssortingng splitter) { return str.Split(new[] { splitter }, SsortingngSplitOptions.None); } } 

Cela entraînera toutefois une exception, si Microsoft décide d’inclure cette méthode-surcharge dans les versions ultérieures. C’est également la raison probable pour laquelle Microsoft n’a pas inclus cette méthode entre-temps: Au moins une entreprise pour laquelle je travaillais utilisait une telle extension dans tous ses projets C #.

Il peut également être possible de définir conditionnellement la méthode à l’exécution si elle n’existe pas.

Les réponses ci-dessus sont toutes correctes. Je vais un peu plus loin et fais en sorte que C # fonctionne pour moi en définissant une méthode d’extension sur Ssortingng:

 public static ssortingng[] Split(this ssortingng toSplit, ssortingng splitOn) { return toSplit.Split(new ssortingng[] { splitOn }, SsortingngSplitOptions.None); } 

De cette façon, je peux l’appeler sur n’importe quelle chaîne de la manière la plus simple que j’attendais naïvement la première fois que j’essayais d’accomplir ceci:

 "a big long ssortingng with stuff to split on".Split("g str"); 
 ssortingng data = "THExxQUICKxxBROWNxxFOX"; return data.Replace("xx","|").Split('|'); 

Choisissez simplement le caractère de remplacement (choisissez-en un qui ne sera probablement pas présent dans la chaîne)!

Le plus simple est d’utiliser Ssortingng.Replace :

 ssortingng mySsortingng = "THExxQUICKxxBROWNxxFOX"; myssortingng = myssortingng.Replace("xx", ", "); 

Ou plus simplement:

 ssortingng mySsortingng = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");