Подтвердить что ты не робот

Выбирайте последний элемент быстро после .Split()

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

Используйте LINQ

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

Ответ 5

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

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