栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#自定义针对URL地址的处理类实例

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#自定义针对URL地址的处理类实例

本文实例讲述了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
{
  /// 
  /// URL的操作类
  /// 
  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;
    }
    /// 
    /// 是否是base64字符串
    /// 
    /// 
    /// 
    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
    /// 
    /// 添加URL参数
    /// 
    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);
      }
    }
    /// 
    /// 更新URL参数
    /// 
    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 = "不明路径";
      }
    }
    /// 
    /// 分析 url 字符串中的参数信息。
    /// 
    /// 输入的 URL
    /// 输出 URL 的基础部分
    /// 输出分析后得到的 (参数名,参数值) 的集合
    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#程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/125616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号