[C#] C#自定义的针对URL地址的处理类 →→→→→进入此内容的聊天室

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

回复 "C#自定义的针对URL地址的处理类"

这儿你可以回复上面这条便签

captcha