热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> .Net编程>>正文内容

网址URL的操作类【经典】

发布时间:2010年01月27日点击数: 未知
  1. public class UrlOper 
  2.     { 
  3.         static System.Text.Encoding encoding = System.Text.Encoding.UTF8; 
  4.  
  5.         #region URL的64位编码 
  6.         public static string Base64Encrypt(string sourthUrl) 
  7.         { 
  8.             string eurl = HttpUtility.UrlEncode(sourthUrl); 
  9.             eurl = Convert.ToBase64String(encoding.GetBytes(eurl)); 
  10.             return eurl; 
  11.         } 
  12.         #endregion 
  13.  
  14.         #region URL的64位解码 
  15.         public static string Base64Decrypt(string eStr) 
  16.         {         
  17.             if (!IsBase64(eStr)) 
  18.             { 
  19.                 return eStr; 
  20.             } 
  21.             byte[] buffer = Convert.FromBase64String(eStr); 
  22.             string sourthUrl = encoding.GetString(buffer); 
  23.             sourthUrl = HttpUtility.UrlDecode(sourthUrl); 
  24.             return sourthUrl; 
  25.         } 
  26.         /// <summary> 
  27.         /// 是否是Base64字符串 
  28.         /// </summary> 
  29.         /// <param name="eStr"></param> 
  30.         /// <returns></returns> 
  31.         public static bool IsBase64(string eStr) 
  32.         { 
  33.             if ((eStr.Length % 4) != 0) 
  34.             { 
  35.                 return false
  36.             } 
  37.             if (!Regex.IsMatch(eStr, "^[A-Z0-9/+=]*$", RegexOptions.IgnoreCase)) 
  38.             { 
  39.                 return false
  40.             } 
  41.             return true
  42.         } 
  43.         #endregion 
  44.  
  45.         /// <summary> 
  46.         /// 添加URL参数 
  47.         /// </summary> 
  48.         public static string AddParam(string url, string paramName, string value) 
  49.         { 
  50.             Uri uri = new Uri(url); 
  51.             if (string.IsNullOrEmpty(uri.Query)) 
  52.             { 
  53.                 string eval = HttpContext.Current.Server.UrlEncode(value); 
  54.                 return String.Concat(url, "?" + paramName + "=" + eval); 
  55.             } 
  56.             else 
  57.             { 
  58.                 string eval = HttpContext.Current.Server.UrlEncode(value); 
  59.                 return String.Concat(url, "&" + paramName + "=" + eval); 
  60.             } 
  61.         } 
  62.         /// <summary> 
  63.         /// 更新URL参数 
  64.         /// </summary> 
  65.         public static string UpdateParam(string url, string paramName, string value) 
  66.         { 
  67.             string keyWord = paramName+"="
  68.             int index = url.IndexOf(keyWord)+keyWord.Length; 
  69.             int index1 = url.IndexOf("&", index); 
  70.             if (index1 == -1) 
  71.             { 
  72.                 url = url.Remove(index, url.Length - index); 
  73.                 url = string.Concat(url, value); 
  74.                 return url; 
  75.             } 
  76.             url = url.Remove(index,index1 - index); 
  77.             url = url.Insert(index, value); 
  78.             return url; 
  79.         } 
  80.  
  81.         #region 分析URL所属的域 
  82.         public static void GetDomain(string fromUrl, out string domain, out string subDomain) 
  83.         { 
  84.             domain = ""
  85.             subDomain = ""
  86.             try 
  87.             { 
  88.                 if (fromUrl.IndexOf("的名片") > -1) 
  89.                 { 
  90.                     subDomain = fromUrl; 
  91.                     domain = "名片"
  92.                     return
  93.                 } 
  94.  
  95.                 UriBuilder builder = new UriBuilder(fromUrl); 
  96.                 fromUrl = builder.ToString(); 
  97.  
  98.                 Uri u = new Uri(fromUrl); 
  99.  
  100.                 if (u.IsWellFormedOriginalString()) 
  101.                 { 
  102.                     if (u.IsFile) 
  103.                     { 
  104.                         subDomain = domain = "客户端本地文件路径"
  105.  
  106.                     } 
  107.                     else 
  108.                     { 
  109.                         string Authority = u.Authority; 
  110.                         string[] ss = u.Authority.Split('.'); 
  111.                         if (ss.Length == 2) 
  112.                         { 
  113.                             Authority = "www." + Authority; 
  114.                         } 
  115.                         int index = Authority.IndexOf('.', 0); 
  116.                         domain = Authority.Substring(index + 1, Authority.Length - index - 1).Replace("comhttp","com"); 
  117.                         subDomain = Authority.Replace("comhttp""com");  
  118.                         if (ss.Length < 2) 
  119.                         { 
  120.                             domain = "不明路径"
  121.                             subDomain = "不明路径"
  122.                         } 
  123.                     } 
  124.                 } 
  125.                 else 
  126.                 { 
  127.                     if (u.IsFile) 
  128.                     { 
  129.                         subDomain = domain = "客户端本地文件路径"
  130.                     } 
  131.                     else 
  132.                     { 
  133.                         subDomain = domain = "不明路径"
  134.                     } 
  135.                 } 
  136.             } 
  137.             catch 
  138.             { 
  139.                 subDomain = domain = "不明路径"
  140.             } 
  141.         } 
  142.  
  143.         /// <summary> 
  144.         /// 分析 url 字符串中的参数信息 
  145.         /// </summary> 
  146.         /// <param name="url">输入的 URL</param> 
  147.         /// <param name="baseUrl">输出 URL 的基础部分</param> 
  148.         /// <param name="nvc">输出分析后得到的 (参数名,参数值) 的集合</param> 
  149.         public static void ParseUrl(string url, out string baseUrl, out NameValueCollection nvc) 
  150.         { 
  151.             if (url == null
  152.                 throw new ArgumentNullException("url"); 
  153.  
  154.             nvc = new NameValueCollection(); 
  155.             baseUrl = ""
  156.  
  157.             if (url == ""
  158.                 return
  159.  
  160.             int questionMarkIndex = url.IndexOf('?'); 
  161.  
  162.             if (questionMarkIndex == -1) 
  163.             { 
  164.                 baseUrl = url; 
  165.                 return
  166.             } 
  167.             baseUrl = url.Substring(0, questionMarkIndex); 
  168.             if (questionMarkIndex == url.Length - 1) 
  169.                 return
  170.             string ps = url.Substring(questionMarkIndex + 1); 
  171.  
  172.             // 开始分析参数对     
  173.             Regex re = new Regex(@"(^|&)?(\w+)=([^&]+)(&|$)?", RegexOptions.Compiled); 
  174.             MatchCollection mc = re.Matches(ps); 
  175.  
  176.             foreach (Match m in mc) 
  177.             { 
  178.                 nvc.Add(m.Result("$2").ToLower(), m.Result("$3")); 
  179.             } 
  180.         } 
  181.  
  182.         #endregion 
  183.     } 

更多模板/案例展示

亚太盛典国际婚纱摄影 本案例由亚太盛典国际婚纱公司所部署,精美的界面,合理的布局是网站的一大特色!
亚太盛典国际婚纱摄影 本案例由亚太盛典国际婚纱公司所部署,精美的界面,合理的布局是网站的一大特色!
关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作