Выбирайте последний элемент быстро после .Split()
У меня есть этот код:
stringCutted = myString.Split("/"). // ???
и я хотел бы сохранить в stringCutted
последний элемент string[]
после разделения, непосредственно, быстро, без сохранения разделенного массива в переменной и доступа к этому элементу с помощью array[array.length]
.
Возможно ли это в С#?
Ответы
Ответ 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('/'));