97 votes

Séparer et joindre une chaîne C#

Duplicata possible :
D'abord diviser puis joindre un sous-ensemble d'une chaîne de caractères

J'essaie de diviser une chaîne de caractères en un tableau, d'en retirer le premier élément (pour l'utiliser), puis de réunir le reste du tableau en une chaîne de caractères distincte.

Exemple :

theString = "Some Very Large String Here"

Deviendrait :

theArray = [ "Some", "Very", "Large", "String", "Here" ]

Ensuite, je veux placer le premier élément dans une variable et l'utiliser plus tard.

Ensuite, je veux joindre le reste du tableau dans une nouvelle chaîne.

Ainsi, cela deviendrait :

firstElem = "Some";
restOfArray = "Very Large String Here"

Je sais que je peux utiliser theArray[0] pour le premier élément, mais comment concaténer le reste du tableau en une nouvelle chaîne ?

207voto

Reed Copsey Points 315315

Vous pouvez utiliser string.Split y string.Join :

string theString = "Some Very Large String Here";
var array = theString.Split(' ');
string firstElem = array.First();
string restOfArray = string.Join(" ", array.Skip(1));

Si vous savez que vous ne voulez toujours séparer que le premier élément, vous pouvez utiliser :

var array = theString.Split(' ', 2);

Ainsi, vous n'êtes pas obligé de vous inscrire :

string restOfArray = array[1];

26voto

Eh bien, voici ma "réponse". Elle utilise le fait que String.Split On peut lui indiquer le nombre d'éléments auxquels il doit se diviser (ce qui manque dans les autres réponses) :

string theString = "Some Very Large String Here";
var array = theString.Split(new [] { ' ' }, 2); // return at most 2 parts
// note: be sure to check it's not an empty array
string firstElem = array[0];
// note: be sure to check length first
string restOfArray = array[1];

Ceci est très similaire à la Substring mais par un moyen différent.

7voto

Sheridan Bulger Points 1108

Vous pouvez diviser et joindre la chaîne, mais pourquoi ne pas utiliser des sous-chaînes ? Ainsi, vous n'aurez qu'une seule division au lieu de diviser la chaîne en cinq parties et de la réunir à nouveau. Le résultat final est le même, mais la sous-chaîne est probablement un peu plus rapide.

string lcStart = "Some Very Large String Here";
int lnSpace = lcStart.IndexOf(' ');

if (lnSpace > -1)
{
    string lcFirst = lcStart.Substring(0, lnSpace);
    string lcRest = lcStart.Substring(lnSpace + 1);
}

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