web-dev-qa-db-fra.com

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

J'ai ce code:

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

et je voudrais 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 #?

60
markzzz

Si vous utilisez .NET 3.5 ou supérieur, 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 unidimensionnel) donc ceci n'est pas itérer sur tout le tableau pour trouver le dernier élément. D'un autre côté, cette optimisation n'est pas documentée ...

125
Jon Skeet
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
25
Jamiec

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);
12
escrubalo

Utilisez LINQ

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

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

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