71 votes

Sélectionnez le dernier élément rapidement après un .Split()

j'ai ce code :

 stringCutted = myString.Split("/"). // ???

et j'aimerais stocker dans stringCutted le dernier élément du string[] après le fractionnement, directement, rapidement, sans stocker le tableau fractionné dans une variable et accéder à cet élément avec array[array.length] .

Est-ce possible en C# ?

157voto

Jon Skeet Points 692016

Si vous utilisez .NET 3.5 ou une version ultérieure, il est facile d'utiliser LINQ to Objects :

 stringCutted = myString.Split('/').Last();

Notez que Last() (sans prédicat) est optimisé pour le cas où la source implémente IList<T> (comme le fait un tableau à une dimension) donc cela n'effectuera pas une itération sur l'ensemble du tableau pour trouver le dernier élément. En revanche, cette optimisation n'est pas documentée...

27voto

Jamiec Points 35773
stringCutted=myString.Split("/").Last()

Mais, juste pour info, si vous essayez d'obtenir un nom de fichier à partir d'un chemin, cela fonctionne mieux :

 var fileName=System.IO.Path.GetFileName("C:\\some\path\and\filename.txt"); 
// yields: filename.txt

15voto

escrubalo Points 221

Puisque vous voulez une solution qui renvoie le dernier élément directement, rapidement, sans stocker le tableau fractionné, je pense que cela peut être utile :

 stringCutted = myString.Substring(myString.LastIndexOf("/")+1);

2voto

Thivan Mydeen Points 1031

Pour utiliser ce code, je saute le dernier élément du lien Url

 string url = Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/'));

2voto

Eduard Points 1428

Utiliser LINQ

 "t/e/s/t".Split("/").Last();

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