Question

Je construis un tableau de chaînes avec

string[] parts = string.spilt(" ");

Et obtenez un tableau contenant X parties, j'aimerais obtenir une copie du tableau de chaînes commençant à l'élément

parts[x-2]

Outre l'approche évidente par force brute (créer un nouveau tableau et insérer des chaînes), existe-t-il une manière plus élégante de le faire en C# ?

Était-ce utile?

La solution

Et Array.Copie ?

http://msdn.microsoft.com/en-us/library/aa310864(VS.71).aspx

Méthode Array.Copy (Array, Int32, Array, Int32, Int32)

Copie une plage d'éléments d'un tableau en commençant à l'index source spécifié et les colle dans un autre tableau en commençant à l'index de destination spécifié.La longueur et les index sont spécifiés sous forme d'entiers 32 bits.

Autres conseils

Je me souviens avoir répondu à cette question et je viens de découvrir un nouvel objet qui peut fournir une méthode haute performance pour faire ce que vous voulez.

Jeter un coup d'œil à ArraySegment<T>.Cela vous permettra de faire quelque chose comme.

string[] parts = myString.spilt(" ");
int idx = parts.Length - 2;
var stringView = new ArraySegment<string>(parts, idx, parts.Length - idx);
List<string> parts = new List<string>(s.Split(" "));
parts.RemoveRange(0, x - 2);

En admettant que List<string>(string[]) est optimisé pour utiliser le tableau existant comme magasin de sauvegarde au lieu d'effectuer une opération de copie, cela pourrait être plus rapide que d'effectuer une copie de tableau.

Utiliser Tableau.Copie.Il a une surcharge qui fait ce dont vous avez besoin :

Array.copy (array, int32, array, int32, int32)
Copie une gamme d'éléments d'un tableau à partir de l'indice de source spécifié et les colle à un autre tableau à partir de l'indice de destination spécifié.

Méthode Array.Copy

Je suppose que quelque chose comme :

string[] less = new string[parts.Length - (x - 2)];
Array.Copy(parts, x - 2, less, 0, less.Length);

(sans le bug de 1 qui, j'en suis sûr, est là.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top