using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; using System.Security.Cryptography; using System.IO; using System.Text; namespace StringClass { public class StringHelper { /// <summary> /// 去掉字符串中的所有空格 /// </summary> /// <param name="_str"></param> /// <returns></returns> public static string ReMoveBlank(string _str) { string strTemp = ""; CharEnumerator CEnumerator = _str.GetEnumerator(); while (CEnumerator.MoveNext()) { byte[] array = new byte[1]; array = System.Text.Encoding.ASCII.GetBytes(CEnumerator.Current.ToString()); int asciicode = (short)(array[0]); if (asciicode != 32) { strTemp += CEnumerator.Current.ToString(); } } return strTemp; } /// <summary> /// 截取字符串并限制字符串长度,多于给定的长度+。。。 /// </summary> /// <param name="str">待截取的字符串</param> /// <param name="len">每行的长度,多于这个长度自动换行</param> /// <param name="max">输出字符串最大的长度</param> /// <returns></returns> public static string CutStr(string str, int len, int max) { string s = ""; string sheng = ""; if (str.Length > max) { str = str.Substring(0, max); sheng = ""; } for (int i = 0; i < str.Length; i++) { int r = i % len; int last = (str.Length / len) * len; if (i != 0 && i <= last) { if (r == 0) { s += str.Substring(i - len, len) + "<br>"; } } else if (i > last) { s += str.Substring(i - 1); break; } } return s + sheng; } /// <summary> /// 截取字符串,不限制字符串长度 /// </summary> /// <param name="str">待截取的字符串</param> /// <param name="len">每行的长度,多于这个长度自动换行</param> /// <returns></returns> public static string CutStr(string str, int len) { string s = ""; for (int i = 0; i < str.Length; i++) { int r = i % len; int last = (str.Length / len) * len; if (i != 0 && i <= last) { if (r == 0) { s += str.Substring(i - len, len) + "<br>"; } } else if (i > last) { s += str.Substring(i - 1); break; } } return s; } public static string PartSubString(string str, int len) { if (str.Length > len) { return str.Substring(0, len) + "..."; } return str; } /// <summary> ///这个方法确保用户的输入不是恶毒的 /// </summary> /// <param name="text">输入字符串</param> /// <param name="maxLength">最大长度</param> /// <returns>转换后的字符串</returns> public static string InputText(string text, int maxLength) { text = text.Trim(); if (string.IsNullOrEmpty(text)) return string.Empty; if (text.Length > maxLength) text = text.Substring(0, maxLength); text = Regex.Replace(text, "[\\s]{2,}", " "); //two or more spaces text = Regex.Replace(text, "(<[b|B][r|R]/*>)+|(<[p|P](.|\\n)*?>)", "\n"); //<br> text = Regex.Replace(text, "(\\s*&[n|N][b|B][s|S][p|P];\\s*)+", " "); // text = Regex.Replace(text, "<(.|\\n)*?>", string.Empty); //any other tags text = text.Replace("'", "''"); return text; } /// <summary> /// 字符串中大写字符转小写 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string StringToLower(string str) { Char[] a = str.ToCharArray(); string strTemp = ""; for (int i = 0; i < a.Length; i++) { if (Convert.ToInt32(a[i]) >= 65 && Convert.ToInt32(a[i]) <= 90) strTemp += a[i].ToString().ToLower(); else strTemp += a[i].ToString(); } return strTemp; } /// <summary> /// 加密 /// </summary> /// <param name="str"></param> /// <param name="key">必须是8位的字符串</param> /// <returns></returns> public static string Encode(string str, int keyIndex) { ArrayList alKey = new ArrayList(); alKey.Add("BookT@#+!NumBq2"); alKey.Add("MagaZine@(21&*ID5"); alKey.Add("ThesisDSHI}._Y"); string key = alKey[keyIndex].ToString(); DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); provider.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8)); provider.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8)); byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(str); MemoryStream stream = new MemoryStream(); CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write); stream2.Write(bytes, 0, bytes.Length); stream2.FlushFinalBlock(); StringBuilder builder = new StringBuilder(); foreach (byte num in stream.ToArray()) { builder.AppendFormat("{0:X2}", num); } stream.Close(); return builder.ToString(); } /// <summary> /// Des 解密 GB2312 /// </summary> /// <param name="str">Desc string</param> /// <param name="key">Key ,必须为8位 </param> /// <returns></returns> public static string Decode(string str, int keyIndex) { ArrayList alKey = new ArrayList(); alKey.Add("BookT@#+!NumBq2"); alKey.Add("MagaZine@(21&*ID5"); alKey.Add("ThesisDSHI}._Y"); string key = alKey[keyIndex].ToString(); DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); provider.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8)); provider.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8)); byte[] buffer = new byte[str.Length / 2]; for (int i = 0; i < (str.Length / 2); i++) { int num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10); buffer[i] = (byte)num2; } MemoryStream stream = new MemoryStream(); CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write); stream2.Write(buffer, 0, buffer.Length); stream2.FlushFinalBlock(); stream.Close(); return Encoding.GetEncoding("GB2312").GetString(stream.ToArray()); } /// <summary> /// MD5不可逆加密 32位 /// </summary> /// <param name="s"></param> /// <param name="_input_charset"></param> /// <returns></returns> public static string GetMD5_32(string str1) { string cl1 = str1; string pwd = ""; MD5 md5 = MD5.Create(); // 加密后是一个字节类型的数组 byte[] s = md5.ComputeHash(Encoding.Unicode.GetBytes(cl1)); // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 for (int i = 0; i < s.Length; i++) { // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 pwd = pwd + s[i].ToString("x"); } return pwd; } /// <summary> /// MD5不可逆加密 16位 /// </summary> /// <param name="ConvertString"></param> /// <returns></returns> public static string GetMd5_16(string ConvertString) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8); t2 = t2.Replace("-", ""); return t2; } } }