StringHelper字符串处理类
删除HTML标记
截断字符串生成唯一ID 由数字组成
压缩与解压字符串
解压字符串
转全角的函数(SBC case)
转半角的函数(DBC case)
Html 编码
对字符串进行HTML解码,解析为可为页面识别的代码
用户名过滤(字符串过滤)
SQL注入过滤
将指定的str串执行sql关键字过滤并返回
将指定的串列表执行sql关键字过滤并以[,]号分隔返回
获取CheckBoxList控件中选中的项
获取CheckBoxList控件中选中的项的Text,字符串由,分隔
根据提供的Id字符串,将列表中的项选中
利用 MD5 加密算法加密字符串
将指定串加密为不包含中杠的MD5值
将字符串翻译成字节数组
SHA1 加密
DES加密字符串
DES解密字符串
AES 加密 解密
base64 字符串编码
base 64 字符串解码
转换为中文星期
执行CMD 命令
替换指定符串中的首个指定字符为新的字符
ReplaceHtml HTML标记替换
生成随机字符串,格式:1q2w3e4r
将操作符代码转换为SQL的操作符号
StringHelper帮助类库源码
using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; using System.IO; using System.IO.Compression; using System.Web.UI.WebControls; using System.Security.Cryptography; using System.Diagnostics; using System.Web; using System.Collections; namespace yunjsonTeam.Common { public class StringHelper { #region 删除HTML标记 /// <summary> /// 删除HTML标记 /// </summary> /// <param name="htmlString">带有样式的字符串</param> /// <returns></returns> public static string RemoveHtmlFormat(string htmlString) { return Regex.Replace(htmlString, "<[^>]+>", ""); } #endregion #region 截断字符串 /// <summary> /// 截断字符串 /// </summary> /// <param name="str">要截断的字符串</param> /// <param name="length">长度</param> /// <returns></returns> public static string CutString(string str, int length) { int i = 0, j = 0; foreach (char chr in str) { i += 2; if (i > length) { str = str.Substring(0, j - 1) + "..."; break; } j++; } return str; } #endregion #region 生成唯一ID 由数字组成 /// <summary> /// 生成唯一ID /// </summary> /// <returns></returns> public static string CreateIDCode() { DateTime Time1 = DateTime.Now.ToUniversalTime(); DateTime Time2 = Convert.ToDateTime("1970-01-01"); TimeSpan span = Time1 - Time2; //span就是两个日期之间的差额 string t = span.TotalMilliseconds.ToString("0"); return t; } #endregion #region 压缩与解压字符串 #region 压缩字符串 /// <summary> /// 压缩字符串 /// </summary> /// <param name="unCompressedString">要压缩的字符串</param> /// <returns></returns> public static string ZipString(string unCompressedString) { byte[] bytData = System.Text.Encoding.UTF8.GetBytes(unCompressedString); MemoryStream ms = new MemoryStream(); Stream s = new GZipStream(ms, CompressionMode.Compress); s.Write(bytData, 0, bytData.Length); s.Close(); byte[] compressedData = (byte[])ms.ToArray(); return System.Convert.ToBase64String(compressedData, 0, compressedData.Length); } #endregion #region 解压字符串 /// <summary> /// 解压字符串 /// </summary> /// <param name="unCompressedString">要解压的字符串</param> /// <returns></returns> public static string UnzipString(string unCompressedString) { System.Text.StringBuilder uncompressedString = new System.Text.StringBuilder(); byte[] writeData = new byte[4096]; byte[] bytData = System.Convert.FromBase64String(unCompressedString); int totalLength = 0; int size = 0; Stream s = new GZipStream(new MemoryStream(bytData), CompressionMode.Decompress); while (true) { size = s.Read(writeData, 0, writeData.Length); if (size > 0) { totalLength += size; uncompressedString.Append(System.Text.Encoding.UTF8.GetString(writeData, 0, size)); } else { break; } } s.Close(); return uncompressedString.ToString(); } #endregion #endregion #region 转全角的函数(SBC case) /// /// 转全角的函数(SBC case) /// /// 任意字符串 /// 全角字符串 /// ///全角空格为12288,半角空格为32///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 /// public string ToSBC(string input) { //半角转全角: char[] c = input.ToCharArray(); for (int i = 0; i < c.Length; i++) { if (c == 32) { c = (char)12288; continue; } if (c < 127) c = (char)(c + 65248); } return new string(c); } #endregion #region 转半角的函数(DBC case) /// /// 转半角的函数(DBC case) /// /// 任意字符串 /// 半角字符串 /// ///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 /// public string ToDBC(string input) { char[] c = input.ToCharArray(); for (int i = 0; i < c.Length; i++) { if (c == 12288) { c = (char)32; continue; } if (c > 65280 && c < 65375) c = (char)(c - 65248); } return new string(c); } #endregion #region Html 编码 /// <summary> /// 对文本框中的字符进行HTML编码 /// </summary> /// <param name="str">源字符串</param> /// <returns></returns> public static string HtmlEncode(string str) { str = str.Replace("&", "&"); str = str.Replace("'", "''"); str = str.Replace("\"", """); str = str.Replace(" ", " "); str = str.Replace("<", "<"); str = str.Replace(">", ">"); str = str.Replace("\n", "<br>"); return str; } /// <summary> /// 对字符串进行HTML解码,解析为可为页面识别的代码 /// </summary> /// <param name="str">要解码的字符串</param> /// <returns></returns> public static string HtmlDecode(string str) { str = str.Replace("<br>", "\n"); str = str.Replace(">", ">"); str = str.Replace("<", "<"); str = str.Replace(" ", " "); str = str.Replace(""", "\""); return str; } #endregion #region 用户名过滤 /// <summary> /// /// </summary> /// <param name="userName"></param> /// <returns></returns> public static bool Filter(string userName) { if (IsExist(userName,"!")) return false; if (IsExist(userName, "!")) return false; if (IsExist(userName, "#")) return false; if (IsExist(userName, "&")) return false; if (IsExist(userName, "$")) return false; if (IsExist(userName, "*")) return false; if (IsExist(userName, ".")) return false; if (IsExist(userName, ",")) return false; if (IsExist(userName, ";")) return false; if (IsExist(userName, "'")) return false; if (IsExist(userName, "<")) return false; if (IsExist(userName, ">")) return false; return true; } public static bool IsExist(string userName, string filterStr) { if (userName.IndexOf(filterStr) > -1) return true; return false; } #endregion #region SQL注入过滤 /// <summary> ///SQL注入过滤 /// </summary> /// <param name="InText">要进行过滤的字符串</param> /// <returns>如果参数存在不安全字符,则返回true</returns> public static bool SqlFilter2(string InText) { string word = "exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join"; if (InText == null) return false; foreach (string i in word.Split('|')) { if ((InText.ToLower().IndexOf(i + " ") > -1) || (InText.ToLower().IndexOf(" " + i) > -1)) { return true; } } return false; } /// <summary> /// 将指定的str串执行sql关键字过滤并返回 /// </summary> /// <param name="str">要过滤的字符串</param> /// <returns></returns> public static string SqlFilter(string str) { return str.Replace("'", "").Replace("'", "").Replace("--", "").Replace("&","").Replace("/*","").Replace(";","").Replace("%",""); } /// <summary> /// 将指定的串列表执行sql关键字过滤并以[,]号分隔返回 /// </summary> /// <param name="strs"></param> /// <returns></returns> public static string SqlFilters(params string[] strs) { StringBuilder sb = new StringBuilder(); foreach (string str in strs) { sb.Append(SqlFilter(str) + ","); } if (sb.Length > 0) return sb.ToString().TrimEnd(','); return ""; } public static bool ProcessSqlStr(string Str) { bool ReturnValue = false; try { if (Str != "") { string SqlStr = "'|insert|select*|and'|or'|insertinto|deletefrom|altertable|update|createtable|createview|dropview|createindex|dropindex|createprocedure|dropprocedure|createtrigger|droptrigger|createschema|dropschema|createdomain|alterdomain|dropdomain|);|select@|declare@|print@|char(|select"; string[] anySqlStr = SqlStr.Split('|'); foreach (string ss in anySqlStr) { if (Str.IndexOf(ss) >= 0) { ReturnValue = true; } } } } catch { ReturnValue = true; } return ReturnValue; } #endregion #region 获取CheckBoxList控件中选中的项 /// <summary> /// 获取CheckBoxList控件中选中的项的value,字符串由,分隔 /// </summary> /// <param name="chk">CheckBoxList 控件ID</param> /// <returns></returns> public static string GetCheckedItemValue(CheckBoxList chk) { string s = ""; foreach (ListItem li in chk.Items) { if (li.Selected) s += li.Value + ","; } return s.TrimEnd(','); } /// <summary> /// 获取CheckBoxList控件中选中的项的Text,字符串由,分隔 /// </summary> /// <param name="chk">CheckBoxList 控件ID</param> /// <returns></returns> public static string GetCheckedItemText(CheckBoxList chk) { string s = ""; foreach (ListItem li in chk.Items) { if (li.Selected) s += li.Text + ","; } return s.TrimEnd(','); } #endregion #region 根据提供的Id字符串,将列表中的项选中 /// <summary> /// 根据提供的Id字符串,将列表中的项选中 /// </summary> /// <param name="itemid">Id字符串,由,分隔</param> /// <param name="checkboxlist">CheckBoxList控件</param> public static void CheckItem(string itemid, CheckBoxList checkboxlist) { foreach (ListItem li in checkboxlist.Items) { if (itemid.IndexOf(li.Value) != -1) li.Selected = true; } } #endregion #region 加密字符串 MD5 #region 利用 MD5 加密算法加密字符串 /// <summary> /// 利用 MD5 加密算法加密字符串 /// </summary> /// <param name="src">字符串源串</param> /// <returns>返加MD5 加密后的字符串</returns> public static string ComputeMD5(string src) { //将密码字符串转化成字节数组 byte[] byteArray = GetByteArray(src); //计算 MD5 密码 byteArray = (new MD5CryptoServiceProvider().ComputeHash(byteArray)); //将字节码转化成字符串并返回 return BitConverter.ToString(byteArray); } /// <summary> /// 将指定串加密为不包含中杠的MD5值 /// </summary> /// <param name="str">要加密的字符串</param> /// <param name="isupper">返回值的大小写(true大写,false小写)</param> /// <returns></returns> public static string ComputeMD5(string str, bool isupper) { string md5str = ComputeMD5(str); if (isupper) return md5str.ToUpper(); return md5str.ToLower(); } #endregion #region 将字符串翻译成字节数组 /// <summary> /// 将字符串翻译成字节数组 /// </summary> /// <param name="src">字符串源串</param> /// <returns>字节数组</returns> private static byte[] GetByteArray(string src) { byte[] byteArray = new byte[src.Length]; for (int i = 0; i < src.Length; i++) { byteArray = Convert.ToByte(src); } return byteArray; } #endregion #region MD5string public static string MD5string(string str) { return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5"); } public static string MD5string(string str,bool isupper) { string md5string = MD5string(str); if (isupper) return md5string.ToUpper(); else return md5string.ToLower(); } #endregion #endregion #region SHA1 加密 public string SHA1(string Source_String) { byte[] StrRes = Encoding.Default.GetBytes(Source_String); HashAlgorithm iSHA = new SHA1CryptoServiceProvider(); StrRes = iSHA.ComputeHash(StrRes); StringBuilder EnText = new StringBuilder(); foreach (byte iByte in StrRes) { EnText.AppendFormat("{0:x2}", iByte); } return EnText.ToString(); } #endregion #region DES加密字符串 /// <summary> /// DES加密字符串 /// </summary> /// <param name="encryptString">待加密的字符串</param> /// <param name="encryptKey">加密密钥,要求为8位</param> /// <returns>加密成功返回加密后的字符串,失败返回源串</returns> public static string EncryptDES(string encryptString,string key) { try { byte[] rgbKey = Encoding.UTF8.GetBytes(key); byte[] rgbIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } catch { return encryptString; } } #endregion #region DES解密字符串 /// <summary> /// DES解密字符串 /// </summary> /// <param name="decryptString">待解密的字符串</param> /// <param name="key">解密密钥,要求8位</param> /// <returns></returns> public static string DecryptDES(string decryptString,string key) { try { //默认密钥向量 byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; byte[] rgbKey = Encoding.UTF8.GetBytes(key); byte[] rgbIV = Keys; byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return decryptString; } } #endregion #region AES 加密 解密 /// <summary> /// AES加密 /// </summary> /// <param name="str">要加密字符串</param> /// <returns>返回加密后字符串</returns> public static String EncryptAES(String str,string aeskey) { Byte[] keyArray = System.Text.UTF8Encoding.UTF8.GetBytes(aeskey); Byte[] toEncryptArray = System.Text.UTF8Encoding.UTF8.GetBytes(str); System.Security.Cryptography.RijndaelManaged rDel = new System.Security.Cryptography.RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = System.Security.Cryptography.CipherMode.ECB; rDel.Padding = System.Security.Cryptography.PaddingMode.PKCS7; System.Security.Cryptography.ICryptoTransform cTransform = rDel.CreateEncryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); } /// <summary> /// AES解密 /// </summary> /// <param name="str">要解密字符串</param> /// <returns>返回解密后字符串</returns> public static String DecryptAES(String str, string aeskey) { Byte[] keyArray = System.Text.UTF8Encoding.UTF8.GetBytes(aeskey); Byte[] toEncryptArray = Convert.FromBase64String(str); System.Security.Cryptography.RijndaelManaged rDel = new System.Security.Cryptography.RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = System.Security.Cryptography.CipherMode.ECB; rDel.Padding = System.Security.Cryptography.PaddingMode.PKCS7; System.Security.Cryptography.ICryptoTransform cTransform = rDel.CreateDecryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return System.Text.UTF8Encoding.UTF8.GetString(resultArray); } #endregion #region base64 字符串编码 /// <summary> /// base64 字符串编码 /// </summary> /// <param name="str">要编码的字符串</param> /// <returns></returns> public static string ToBase64(string str) { byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(str); return Convert.ToBase64String(data); } /// <summary> /// base 64 字符串解码 /// </summary> /// <param name="base64str">要解码的字符串</param> /// <returns></returns> public static string UnBase64(string base64str) { byte[] data = Convert.FromBase64String(base64str); return System.Text.ASCIIEncoding.ASCII.GetString(data); } #endregion #region 转换为中文星期 /// <summary> /// 转换为中文星期 /// </summary> /// <param name="dayfweek">英文星期</param> /// <returns></returns> public static string ConvertWeekDayToCn(DayOfWeek dayfweek) { switch (dayfweek) { case DayOfWeek.Sunday: return "星期日"; case DayOfWeek.Monday: return "星期一"; case DayOfWeek.Tuesday: return "星期二"; case DayOfWeek.Wednesday: return "星期三"; case DayOfWeek.Thursday: return "星期四"; case DayOfWeek.Friday: return "星期五"; case DayOfWeek.Saturday: return "星期六"; default: return ""; } } #endregion #region 执行CMD 命令 /// <summary> /// 执行CMD 命令 /// </summary> /// <param name="strCommand">命令串</param> /// <returns></returns> public static string RunCommand(string strCommand) { Process process = new Process(); process.StartInfo.FileName = "CMD.exe"; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.CreateNoWindow = true; process.Start(); process.StandardInput.WriteLine(strCommand); process.StandardInput.WriteLine("exit"); string str = process.StandardOutput.ReadToEnd(); process.Close(); return str; } #endregion public static string Escape(string s) { StringBuilder builder = new StringBuilder(); byte[] bytes = Encoding.Unicode.GetBytes(s); for (int i = 0; i < bytes.Length; i += 2) { builder.Append("%u"); builder.Append(bytes[i + 1].ToString("X2")); builder.Append(bytes.ToString("X2")); } return builder.ToString(); } public static string ReplaceHtml(string str) { if (str == null || str.Length==0) return ""; str = str.Replace("<", "<"); str = str.Replace(">", ">"); str = str.Replace("\n", ""); str = str.Replace("\r", ""); return str; } public static string ReplaceEnter(string str) { if (str == null || str.Length == 0) return ""; str = str.Replace("\n", ""); str = str.Replace("\r", ""); return str; } /// <summary> /// 替换指定符串中的首个指定字符为新的字符 /// </summary> /// <param name="sourcestr">要修改的字符串</param> /// <param name="oldstr">被替换的字符串</param> /// <param name="newstr">替换字符串 </param> /// <returns></returns> public static string ReplaceFirst(string sourcestr,string oldstr, string newstr) { Regex reg = new Regex(oldstr); if (reg.IsMatch(sourcestr)) { sourcestr = reg.Replace(sourcestr, newstr, 1); } return sourcestr; } #region 生成随机字符串,格式:1q2w3e4r /// <summary> /// 生成随机字符串,格式:1q2w3e4r /// </summary> /// <returns></returns> public static string BuildPassword() { Random random = new Random(); List<int> ints = new List<int>(); for (int i = 0; i < 4; i++) { ints.Add(random.Next(9)); } List<string> strs = new List<string>(); //string CodeSerial = "a,b,c,d,e,f,g,h,i,j,k,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z"; string CodeSerial = "a,b,c,d,e,f,g,h,i,j,k,m,n,p,q,r,s,t,u,v,w,x,y,z"; string[] arr = CodeSerial.Split(','); int randValue = -1; Random rand = new Random(unchecked((int)DateTime.Now.Ticks)); for (int i = 0; i < 4; i++) { randValue = rand.Next(0, arr.Length - 1); strs.Add(arr[randValue]); } string passwd = ""; for (int k = 0; k < 4; k++) { passwd += ints[k].ToString() + strs[k]; } return passwd; } #endregion /// <summary> /// 将操作符代码转换为SQL的操作符号 /// </summary> /// <param name="op"></param> /// <returns></returns> private static string GetOperatorQueryText(string op) { switch (op.ToLower()) { case "eq": return " = "; case "gt": return " > "; case "ge": return " >= "; case "nu": return " IS NULL "; case "nn": return " IS NOT NULL "; case "lt": return " < "; case "le": return " <= "; case "cn": return " like "; case "bw": return " like "; case "ew": return " like "; case "ne": return " <> "; case "in": return " IN "; case "ni": return " NOT IN "; default: return " = "; } } public static object GetRequestObject(string key) { return HttpContext.Current.Request[key]; } } }