J'ai utilisé la Split()
méthode pour diviser les chaînes, mais cela ne semble fonctionner que si vous divisez une chaîne par un caractère. Existe-t-il un moyen de diviser a string
, une autre chaîne étant le paramètre split by?
J'ai essayé de convertir le séparateur en un tableau de caractères, sans succès.
En d'autres termes, je voudrais diviser le string
:
THExxQUICKxxBROWNxxFOX
par xx
, et retourne un tableau avec des valeurs:
LE RENARD BRUN RAPIDE
Réponses:
Afin de diviser par une chaîne, vous devrez utiliser la surcharge du tableau de chaînes .
la source
string.Split
.string[] Split(string pattern)
, qui est l'utilisation la plus naturelle à laquelle je pouvais penser, mais elle n'est pas là. J'ai écrit C avant, donc j'ai l'habitude de charger des tableaux, mais je déteste toujours voirchar[]
apparaître un code C # car cela attire soudainement mon attention du niveau du flux au niveau des octets. Quelqu'un sait pourquoi les gars de la bibliothèque C # ont conçu la méthode Split comme ça? S'il y a une bonne raison, je peux probablement essayer de l'apprécier malgré les inconvénients.data.Split("xx")
?Il y a une surcharge de Split qui prend des chaînes.
Vous pouvez utiliser l'une de ces options StringSplitOptions
Donc, si la chaîne est "THExxQUICKxxxxBROWNxxFOX",
StringSplitOptions.None
retournera une entrée vide dans le tableau pour la partie "xxxx" alors queStringSplitOptions.RemoveEmptyEntries
ce ne sera pas le cas.la source
est la façon dont je le fais habituellement.
Bien sûr, vous aurez besoin de:
ou :
mais là encore, j'ai besoin de cette bibliothèque tout le temps.
la source
RegEx.Split
est un peu plus coûteux qu'un simple enString.Split
raison de la surcharge des expressions régulières.Regex.Escape
d'abord la chaîne, cela échappera à tous les méta-caractères regex.Il y a une surcharge de String.Split pour cela:
la source
J'aime généralement utiliser ma propre extension pour cela:
Cela entraînera cependant une exception si Microsoft décide d'inclure cette surcharge de méthode 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 j'ai travaillé a utilisé une telle extension dans tous ses projets C #.
Il peut également être possible de définir conditionnellement la méthode lors de l'exécution si elle n'existe pas.
la source
params string[] splitter
comme deuxième paramètre et modifiernew[] {splitter}
poursplitter
prendre en charge plusieurs délimiteurs.Les réponses précédentes sont toutes correctes. Je vais un peu plus loin et fais fonctionner C # pour moi en définissant une méthode d'extension sur String:
De cette façon, je peux l'appeler sur n'importe quelle chaîne de la manière simple à laquelle je m'attendais naïvement la première fois que j'ai essayé d'accomplir ceci:
la source
À partir de .NET Core 2.0, il existe un remplacement qui prend une chaîne.
Alors maintenant, vous pouvez le faire
"THExxQUICKxxBROWNxxFOX".Split("xx")
.Voir https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_
la source
Choisissez simplement le caractère de remplacement avec soin (choisissez-en un qui n'est probablement pas déjà présent dans la chaîne)!
la source
|
déjà le caractère, pour cette raison, je pense que c'est dangereux à utiliser.C'est aussi simple:
la source
"THExQUICK"
là où nous ne voulons pas qu'il soitLa façon la plus simple est d'utiliser
String.Replace
:Ou plus simplement:
la source
xx
trouvaient les.