Эквивалентная функция для IO.Path.GetFileName для URL-адресов?

В .NET 4.0, что эквивалентная функция для IO.Path.GetFileName для URL-адресов?

4 ответа

Класс Uri - ваш друг.

Предоставляет объектное представление единого идентификатора ресурса (URI) и легкий доступ к частям URI.

IsFile попытается определить, действительно ли Uri указывает на файл.

Используйте свойство Segements, чтобы получить имя файла (это будет последний сегмент).

Uri uri = new Uri("http://example.com/title/index.htm");
var filename = uri.Segments[uri.Segments.Length - 1];
// filename == "index.htm"


Вы можете придерживаться создания объекта Uri или если вы заботитесь о производительности, используйте что-то похожее на это:

public class UriHelpers
 {
 public static string GetFileNameFromUrl(string url)
 {
 string lastSegment = url.Split('/').Last();
 return lastSegment.Substring(0, lastSegment.IndexOf('?') < 0 ? lastSegment.Length : lastSegment.IndexOf('?'));
 }
 }


Существует много способов: основное описание здесь Бакически эксплуатируя класс Uri и, возможно, строковое токенинирование, если необходимо.


Вы можете использовать Server.MapPath() для сопоставления физического пути с виртуальным путем.

Кроме того, существует несколько методов в HTTPUtility, которые помогут вам наметить различные типы путей.

licensed under cc by-sa 3.0 with attribution.