web-dev-qa-db-fra.com

Fractionner et rejoindre la chaîne C #

Duplicate possible:
Commencez par scinder puis associer un sous-ensemble d'une chaîne

J'essaie de scinder une chaîne de caractères dans un tableau, de prendre le premier élément (l'utiliser), puis de joindre le reste du tableau en une chaîne séparée.

Exemple:

theString = "Some Very Large String Here"

deviendrait:

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

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

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

Donc cela deviendrait:

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

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

67
Gaui

Vous pouvez utiliser string.Split et 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 voulez toujours séparer le premier élément, vous pouvez utiliser:

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

Cela fait en sorte que vous n'avez pas à vous inscrire:

string restOfArray = array[1];
160
Reed Copsey

Eh bien, voici ma "réponse". Il utilise le fait que String.Split peut être dit contenir de nombreux éléments vers lesquels il doit se scinder (ce que je trouvais manquant 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 méthode Substring, simplement par un moyen différent.

21
user166390

Vous pouvez scinder et joindre la chaîne, mais pourquoi ne pas utiliser de sous-chaînes? Ensuite, vous vous retrouvez avec une seule division au lieu de scinder la chaîne en 5 parties et de la rejoindre. 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);
}
6
Sheridan Bulger