最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#自定義針對(duì)URL地址的處理類實(shí)例

 更新時(shí)間:2015年03月27日 10:24:36   作者:feige  
這篇文章主要介紹了C#自定義針對(duì)URL地址的處理類,實(shí)例分析了C#解析URL地址實(shí)現(xiàn)URl參數(shù)加密解密及參數(shù)解析的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

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

這個(gè)C#類是專門針對(duì)URL網(wǎng)址處理的類,可以對(duì)URL地址進(jìn)行Base64的加密和解密,可以通過函數(shù)的方式向URL添加參數(shù),可以更新URL中已有參數(shù)的值,分析URL地址的域名、子域名,分析URL的所有參數(shù)和參數(shù)值,功能非常全面,還可以自己擴(kuò)充,非常具有實(shí)用價(jià)值

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參數(shù)
    /// </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參數(shù)
    /// </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 字符串中的參數(shù)信息。
    /// </summary>
    /// <param name="url">輸入的 URL</param>
    /// <param name="baseUrl">輸出 URL 的基礎(chǔ)部分</param>
    /// <param name="nvc">輸出分析后得到的 (參數(shù)名,參數(shù)值) 的集合</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);
      // 開始分析參數(shù)對(duì)  
      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
  }
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#生成XML的三種途徑小結(jié)

    C#生成XML的三種途徑小結(jié)

    為了全面,這里都將XML保存到文件中,有三種生成XML的方式,需要的朋友可以參考下
    2013-05-05
  • C#使用NOPI庫(kù)實(shí)現(xiàn)導(dǎo)入Excel文檔

    C#使用NOPI庫(kù)實(shí)現(xiàn)導(dǎo)入Excel文檔

    NPOI中N指代的是.Net,POI是一個(gè)完全開源的Java寫成的庫(kù),能夠在沒有安裝微軟Office或者相應(yīng)環(huán)境的情況下讀寫Excel、Word等微軟OLE2組件文檔,幾乎支持所有的Office97~Office2007的文件格式。所以NPOI就是POI項(xiàng)目的.Net版本。
    2017-05-05
  • C#實(shí)現(xiàn)帶引導(dǎo)窗體的窗體設(shè)計(jì)操作流程

    C#實(shí)現(xiàn)帶引導(dǎo)窗體的窗體設(shè)計(jì)操作流程

    很多時(shí)候,我們的窗體設(shè)計(jì)需要一個(gè)引導(dǎo)窗體,當(dāng)打開一個(gè)項(xiàng)目的窗體時(shí),默認(rèn)的是先打開一個(gè)歡迎或介紹項(xiàng)目信息的引導(dǎo)窗體,幾秒鐘后再打開項(xiàng)目的主窗體,本文給大家介紹了C#實(shí)現(xiàn)帶引導(dǎo)窗體的窗體設(shè)計(jì)操作流程,感興趣的朋友可以參考下
    2024-04-04
  • .net C# 實(shí)現(xiàn)任意List的笛卡爾乘積算法代碼

    .net C# 實(shí)現(xiàn)任意List的笛卡爾乘積算法代碼

    笛卡爾(Descartes)乘積又叫直積。假設(shè)集合A={a,b},集合B={0,1,2},則兩個(gè)集合的笛卡爾積為{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。
    2013-05-05
  • 利用C#實(shí)現(xiàn)將小數(shù)值四舍五入為整數(shù)

    利用C#實(shí)現(xiàn)將小數(shù)值四舍五入為整數(shù)

    在項(xiàng)目的開發(fā)中,遇到一些除法計(jì)算內(nèi)容會(huì)產(chǎn)生小數(shù)值,但是又需要根據(jù)項(xiàng)目的實(shí)際情況將這些小數(shù)內(nèi)容化為整數(shù),所以本文為大家整理了C#實(shí)現(xiàn)將小數(shù)值四舍五入為整數(shù)的方法,希望對(duì)大家有所幫助
    2023-07-07
  • 使用Linq注意事項(xiàng)避免報(bào)錯(cuò)的方法

    使用Linq注意事項(xiàng)避免報(bào)錯(cuò)的方法

    這篇文章主要介紹了使用Linq注意事項(xiàng)避免報(bào)錯(cuò)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • C#實(shí)現(xiàn)拼手氣紅包算法

    C#實(shí)現(xiàn)拼手氣紅包算法

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)拼手氣紅包算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(二)

    C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(二)

    這篇文章主要介紹了C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(二),本文講解了internal與protected、private、enum、string的==、傳引用等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • C# Oracle數(shù)據(jù)庫(kù)操作類實(shí)例詳解

    C# Oracle數(shù)據(jù)庫(kù)操作類實(shí)例詳解

    這篇文章主要介紹了C# Oracle數(shù)據(jù)庫(kù)操作類實(shí)例,進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)很有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-07-07
  • C#調(diào)用接口的四種方式介紹

    C#調(diào)用接口的四種方式介紹

    這篇文章介紹了C#調(diào)用接口的四種方式,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

湘乡市| 达尔| 鹿泉市| 永新县| 六盘水市| 遂昌县| 五华县| 泽库县| 宜阳县| 仁怀市| 当雄县| 德格县| 临西县| 施秉县| 普兰店市| 泸西县| 仪陇县| 绩溪县| 延长县| 丹凤县| 绵竹市| 深水埗区| 甘德县| 准格尔旗| 呈贡县| 收藏| 贵港市| 大洼县| 霞浦县| 林芝县| 巴林左旗| 祁门县| 互助| 平度市| 达孜县| 得荣县| 新田县| 永平县| 玛曲县| 建水县| 镇平县|