加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:57:40 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 using System;using System.Text.RegularExpressions;using System.Web;using System.Collections.Specialized; namespace DotNet.Utilities{ /// sum

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

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 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 字符串中的参数信息。sharejs.com
        /// </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
    }
}
 

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读