国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#自定義針對URL地址的處理類實例

2020-01-24 02:05:31
字體:
來源:轉載
供稿:網友

本文實例講述了C#自定義針對URL地址的處理類。分享給大家供大家參考。具體分析如下:

這個C#類是專門針對URL網址處理的類,可以對URL地址進行Base64的加密和解密,可以通過函數的方式向URL添加參數,可以更新URL中已有參數的值,分析URL地址的域名、子域名,分析URL的所有參數和參數值,功能非常全面,還可以自己擴充,非常具有實用價值

using System;using System.Text.RegularExpressions;using System.Web;using System.Collections.Specialized;namespace DotNet.Utilities{  /// <summary>  /// URL的操作類  /// </summary>  public class UrlOper  {    static System.Text.Encoding encoding = System.Text.Encoding.UTF8;    #region URL的64位編碼    public static string Base64Encrypt(string sourthUrl)    {      string eurl = HttpUtility.UrlEncode(sourthUrl);      eurl = Convert.ToBase64String(encoding.GetBytes(eurl));      return eurl;    }    #endregion    #region URL的64位解碼    public static string Base64Decrypt(string eStr)    {          if (!IsBase64(eStr))      {        return eStr;      }      byte[] buffer = Convert.FromBase64String(eStr);      string sourthUrl = encoding.GetString(buffer);      sourthUrl = HttpUtility.UrlDecode(sourthUrl);      return sourthUrl;    }    /// <summary>    /// 是否是Base64字符串    /// </summary>    /// <param name="eStr"></param>    /// <returns></returns>    public static bool IsBase64(string eStr)    {      if ((eStr.Length % 4) != 0)      {        return false;      }      if (!Regex.IsMatch(eStr, "^[A-Z0-9/+=]*$", RegexOptions.IgnoreCase))      {        return false;      }      return true;    }    #endregion    /// <summary>    /// 添加URL參數    /// </summary>    public static string AddParam(string url, string paramName, string value)    {      Uri uri = new Uri(url);      if (string.IsNullOrEmpty(uri.Query))      {        string eval = HttpContext.Current.Server.UrlEncode(value);        return String.Concat(url, "?" + paramName + "=" + eval);      }      else      {        string eval = HttpContext.Current.Server.UrlEncode(value);        return String.Concat(url, "&" + paramName + "=" + eval);      }    }    /// <summary>    /// 更新URL參數    /// </summary>    public static string UpdateParam(string url, string paramName, string value)    {      string keyWord = paramName+"=";      int index = url.IndexOf(keyWord)+keyWord.Length;      int index1 = url.IndexOf("&", index);      if (index1 == -1)      {        url = url.Remove(index, url.Length - index);        url = string.Concat(url, value);        return url;      }      url = url.Remove(index,index1 - index);      url = url.Insert(index, value);      return url;    }    #region 分析URL所屬的域    public static void GetDomain(string fromUrl, out string domain, out string subDomain)    {      domain = "";      subDomain = "";      try      {        if (fromUrl.IndexOf("的名片") > -1)        {          subDomain = fromUrl;          domain = "名片";          return;        }        UriBuilder builder = new UriBuilder(fromUrl);        fromUrl = builder.ToString();        Uri u = new Uri(fromUrl);        if (u.IsWellFormedOriginalString())        {          if (u.IsFile)          {            subDomain = domain = "客戶端本地文件路徑";          }          else          {            string Authority = u.Authority;            string[] ss = u.Authority.Split('.');            if (ss.Length == 2)            {              Authority = "www." + Authority;            }            int index = Authority.IndexOf('.', 0);            domain = Authority.Substring(index + 1, Authority.Length - index - 1).Replace("comhttp","com");            subDomain = Authority.Replace("comhttp", "com");            if (ss.Length < 2)            {              domain = "不明路徑";              subDomain = "不明路徑";            }          }        }        else        {          if (u.IsFile)          {            subDomain = domain = "客戶端本地文件路徑";          }          else          {            subDomain = domain = "不明路徑";          }        }      }      catch      {        subDomain = domain = "不明路徑";      }    }    /// <summary>    /// 分析 url 字符串中的參數信息。    /// </summary>    /// <param name="url">輸入的 URL</param>    /// <param name="baseUrl">輸出 URL 的基礎部分</param>    /// <param name="nvc">輸出分析后得到的 (參數名,參數值) 的集合</param>    public static void ParseUrl(string url, out string baseUrl, out NameValueCollection nvc)    {      if (url == null)        throw new ArgumentNullException("url");      nvc = new NameValueCollection();      baseUrl = "";      if (url == "")        return;      int questionMarkIndex = url.IndexOf('?');      if (questionMarkIndex == -1)      {        baseUrl = url;        return;      }      baseUrl = url.Substring(0, questionMarkIndex);      if (questionMarkIndex == url.Length - 1)        return;      string ps = url.Substring(questionMarkIndex + 1);      // 開始分析參數對        Regex re = new Regex(@"(^|&)?(/w+)=([^&]+)(&|$)?", RegexOptions.Compiled);      MatchCollection mc = re.Matches(ps);      foreach (Match m in mc)      {        nvc.Add(m.Result("$2").ToLower(), m.Result("$3"));      }    }    #endregion  }}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安岳县| 三门峡市| 大理市| 德安县| 台北县| 金华市| 岚皋县| 东方市| 昌都县| 平利县| 灯塔市| 石渠县| 珠海市| 新乐市| 汶川县| 巧家县| 沙河市| 桦南县| 郴州市| 同仁县| 资阳市| 炎陵县| 云龙县| 栾川县| 兴文县| 建德市| 旅游| 明星| 和田市| 长宁区| 南木林县| 北安市| 达日县| 香港 | 读书| 博野县| 县级市| 鸡东县| 鄂州市| 财经| 台东县|