#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
/// <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