将网页中的相对路径转化为绝对路径

本文介绍了一种根据网页地址获取域名的方法,并详细解释了如何将网页中的相对路径转换为绝对路径的过程。通过具体代码示例,读者可以学习到处理URL的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#region 计算路径


        /// <summary>
        /// 根据网页地址获取域名
        /// </summary>
        /// <param name="oldUrl">网页地址</param>
        /// <returns>返回域名</returns>
        private static string GetDomain(string oldUrl)
        {
            string result = "";
            string preHttp = oldUrl.Substring(0, 7);
            string oldUrl1 = oldUrl.Substring(7);
            string domain = oldUrl;
            if (oldUrl1.IndexOf("/") != -1)
            {
                domain = preHttp + oldUrl1.Substring(0, oldUrl1.IndexOf('/'));
            }
            result = domain;
            return result;
        }




        /// <summary>
        /// 根据网页地址将相对路径转化为绝对路径
        /// </summary>
        /// <param name="oldUrl">网页地址</param>
        /// <param name="relativeUrl">该网页下的元素(img 的src ,a 的 href)相对路径</param>
        /// <returns>返回绝对路径</returns>
        private static string GetAbsoluteUrl(string oldUrl, string relativeUrl)
        {
            string result = "";


            string virtualPath = oldUrl;
            oldUrl = oldUrl.Trim();
            string preHttp = oldUrl.Substring(0, 7);


            if (!oldUrl.ToLower().Contains("http://")) //oldUrl不以http://开头,无法比较
            {
                return relativeUrl;
            }
            string domain = GetDomain(oldUrl);


            if (!relativeUrl.ToLower().Contains("http://"))
            {
                var fromDomain = domain;
                if (fromDomain.LastIndexOf("/") == fromDomain.Length - 1)
                {
                    fromDomain = fromDomain.Substring(0, fromDomain.Length - 1);
                }




                if (relativeUrl.IndexOf("/") == 0)
                {
                    result = domain + relativeUrl;
                }
                else
                {
                    var oldUrl1 = oldUrl.Substring(7);
                    if (oldUrl1.IndexOf("/") != -1)
                        oldUrl1 = oldUrl1.Substring(0, oldUrl1.LastIndexOf("/"));
                    while (relativeUrl.IndexOf("../") != -1)
                    {
                        relativeUrl = relativeUrl.Replace("../", "");
                        oldUrl1 = oldUrl1.Substring(0, oldUrl1.LastIndexOf("/"));
                    }
                    result = preHttp + oldUrl1 + "/" + relativeUrl;
                }


            }




            return result;


        }
        #endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值