Beispiel #1
0
        /// <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));
        }
Beispiel #2
0
 public Url SetExtension(string extension)
 {
     return(new Url(scheme, authority, PathWithoutExtension.TrimEnd('/') + extension, query, fragment));
 }
Beispiel #3
0
 /// <summary>
 /// Возвращает массив сегментов адреса
 /// </summary>
 /// <returns></returns>
 public string[] GetSegments()
 {
     return(PathWithoutExtension.Split(slashes, StringSplitOptions.RemoveEmptyEntries));
 }