/// <summary>Removes the segment at the specified location.</summary> /// <param name="index">The segment index to remove</param> /// <returns>An url without the specified segment.</returns> public Url RemoveSegment(int index) { if (string.IsNullOrEmpty(path) || path == "/" || index < 0) { return(this); } if (index == 0) { int slashIndex = path.IndexOf('/', 1); if (slashIndex < 0) { return(new Url(scheme, authority, "/", query, fragment)); } return(new Url(scheme, authority, path.Substring(slashIndex), query, fragment)); } string[] segments = PathWithoutExtension.Split(slashes, StringSplitOptions.RemoveEmptyEntries); if (index >= segments.Length) { return(this); } if (index == segments.Length - 1) { return(RemoveTrailingSegment()); } string newPath = "/" + string.Join("/", segments, 0, index) + "/" + string.Join("/", segments, index + 1, segments.Length - index - 1) + Extension; return(new Url(scheme, authority, newPath, query, fragment)); }
public Url SetExtension(string extension) { return(new Url(scheme, authority, PathWithoutExtension.TrimEnd('/') + extension, query, fragment)); }
/// <summary> /// Возвращает массив сегментов адреса /// </summary> /// <returns></returns> public string[] GetSegments() { return(PathWithoutExtension.Split(slashes, StringSplitOptions.RemoveEmptyEntries)); }