C#自定義針對URL地址的處理類實例
阿新 • • 發佈:2017-12-19
new expr 操作方法 border int ignore n) spec $2
C#自定義針對URL地址的處理類實例
本文地址: http://www.paobuke.com/develop/c-develop/pbk23057.html
總結的5個C#字符串操作方法分享C#判斷指定分區是否是ntfs格式的方法unity實現多點觸控代碼理解C#中的事件
本文實例講述了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#程序設計有所幫助。
除聲明外,跑步客文章均為原創,轉載請以鏈接形式標明本文地址C#自定義針對URL地址的處理類實例
本文地址: http://www.paobuke.com/develop/c-develop/pbk23057.html
相關內容
C#中增加SQLite事務操作支持與使用方法C# 設計模式系列教程-狀態模式C# 函數覆蓋總結學習(推薦)淺談C#指針問題總結的5個C#字符串操作方法分享C#判斷指定分區是否是ntfs格式的方法unity實現多點觸控代碼理解C#中的事件
C#自定義針對URL地址的處理類實例