Выберите последний элемент быстро после .Split () - PullRequest
60 голосов
/ 31 августа 2011

У меня есть этот код:

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

и я хотел бы сохранить в stringCutted последний элемент string[] после разделения, напрямую, быстро, без сохранения разделенного массива в переменной и доступа к этому элементу с помощью array[array.length].

Возможно ли это в C #?

Ответы [ 5 ]

122 голосов
/ 31 августа 2011

Если вы используете .NET 3.5 или выше, с помощью LINQ to Objects легко:

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

Обратите внимание, что Last() (без предиката) оптимизировано дляслучай, когда источник реализует IList<T> (как это делает одномерный массив), так что не будет перебирать весь массив, чтобы найти последний элемент.С другой стороны, эта оптимизация недокументирована ...

25 голосов
/ 31 августа 2011
stringCutted=myString.Split("/").Last()

Но, к вашему сведению, если вы пытаетесь получить имя файла из пути, это работает лучше:

var fileName=System.IO.Path.GetFileName("C:\\some\path\and\filename.txt"); 
// yields: filename.txt
11 голосов
/ 31 августа 2011

Поскольку вам нужно решение, которое возвращает последний элемент напрямую, быстро, без сохранения разбитого массива, я думаю, что это может быть полезно:

stringCutted = myString.Substring(myString.LastIndexOf("/")+1);
3 голосов
/ 31 августа 2011

Использовать LINQ

"t/e/s/t".Split("/").Last();
1 голос
/ 01 декабря 2015

Для использования этого кода я пропускаю последний элемент из ссылки Url.

string url = Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...