在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
/************************************************************************************* * 代码:吴蒋 * 时间:2012.03.30 * 说明:字符串处理公共基类 * 其他: * 修改人: * 修改时间: * 修改说明: ************************************************************************************/ using System; using System.Web; using System.Text.RegularExpressions; using System.Text; namespace Common { public class StringHelp { /// <summary> /// 默认构造函数 /// </summary> public StringHelp() { } /// <summary> /// 判断参数字符是否为空 /// </summary> /// <param name="sourceString">输入字符串</param> /// <returns>True:为空;falsh:不为空</returns> public static bool IsNull(string sourceString) { if (String.Equals(sourceString, null) || String.Equals(sourceString, "")) { return true; } return false; } /// <summary> /// 获取操作字符串长度 /// </summary> /// <param name="sourceString">输入字符串</param> /// <returns>返回长度</returns> public static int MaxLength(string sourceString) { return sourceString.Length; } /// <summary> /// 双向截取一定长度字符串 /// </summary> /// <param name="sourceString">输入操作字符串</param> /// <param name="leftOrRight">截取方向True:Left;Flash:Right</param> /// <param name="size">要截取的大小</param> /// <returns>返回截取后的字符串</returns> public static string InterceptString(string sourceString, bool leftOrRight, int size) { if (IsNull(sourceString)) { throw new Exception("操作字符串参数不能为空!"); } int maxLength = MaxLength(sourceString); if (size >= maxLength) { return sourceString; } if (leftOrRight) { return sourceString.Substring(0, size); } return sourceString.Substring(maxLength - size, size); } /// <summary> /// 浅去除Html /// </summary> /// <param name="sourceString">输入操作字符串</param> /// <returns>返回操作后字符串</returns> public static string WipeOffHtml(string sourceString) { return Regex.Replace(sourceString, "<[^>]*>", ""); } /// <summary> /// 深去除Html包括脚本等 /// </summary> /// <param name="sourceString">输入操作字符串</param> /// <returns>返回操作后字符串</returns> public string ScriptHtml(string sourceString) { string[] aryReg = { @"<script[^>]*?>.*?</script>", @"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>", @"([\r\n])[\s]+", @"&(quot|#34);", @"&(amp|#38);", @"&(lt|#60);", @"&(gt|#62);", @"&(nbsp|#160);", @"&(iexcl|#161);", @"&(cent|#162);", @"&(pound|#163);", @"&(copy|#169);", @"&#(\d+);", @"-->", @"<!--.*\n" }; string[] aryRep = { "", "", "", "\"", "&", "<", ">", " ", "\xa1",//chr(161), "\xa2",//chr(162), "\xa3",//chr(163), "\xa9",//chr(169), "", "\r\n", "" }; string newReg = aryReg[0]; string strOutput = sourceString; for (int i = 0; i < aryReg.Length; i++) { Regex regex = new Regex(aryReg[i], RegexOptions.IgnoreCase); strOutput = regex.Replace(strOutput, aryRep[i]); } strOutput.Replace("<", ""); strOutput.Replace(">", ""); strOutput.Replace("\r\n", ""); return strOutput; } /// <summary> /// 输入HTML中的ImgUrl /// </summary> /// <param name="sourceString">输入操作字符串</param> /// <returns>返回干净的Url</returns> public static string GetImgUrl(string sourceString) { string str = string.Empty; Regex r = new Regex(@"<img\s+[^>]*\s*src\s*=\s*([']?)(?<url>\S+)'?[^>]*>", RegexOptions.Compiled); Match m = r.Match(sourceString.ToLower()); if (m.Success) str = m.Result("${url}"); return str; } /// <summary> /// 过滤SQL注入 /// </summary> /// <param name="sourceString">输入操作字符串</param> /// <returns>返回安全的SQL</returns> public static string FilterSql(string sourceString) { string str = sourceString; str = str.Replace("'", "''"); str = str.Replace("<", "<"); str = str.Replace(">", ">"); return str; } /// <summary> /// 移除非法或不友好字符 /// </summary> /// <param name="keyWord">非法或不友好字符以|隔开</param> /// <param name="chkStr">要处理的字符串</param> /// <returns>处理后的字符串</returns> public static string FilterBadWords(string keyWord, string sourceString) { if (sourceString == "") { return ""; } string[] bwords = keyWord.Split('|'); int i, j; string str; StringBuilder sb = new StringBuilder(); for (i = 0; i < bwords.Length; i++) { str = bwords[i].ToString().Trim(); string regStr, toStr; regStr = str; Regex r = new Regex(regStr, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline); Match m = r.Match(sourceString); if (m.Success) { j = m.Value.Length; sb.Insert(0, "*", j); toStr = sb.ToString(); sourceString = Regex.Replace(sourceString, regStr, toStr, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline); } sb.Remove(0, sb.Length); } return sourceString; } /// <summary> /// 判断是否是合法IPV4 /// </summary> /// <param name="sourceString">要处理的字符串</param> /// <returns>返回结果</returns> public static bool IsIPV4(string sourceString) { Regex rx = new Regex(@"((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))"); return (rx.IsMatch(sourceString)); } /// <summary> /// IPV4转数字 /// </summary> /// <param name="sourceString">要处理的字符串</param> /// <returns>返回结果</returns> public static double IPV4Convert(string sourceString) { if (!IsIPV4(sourceString)) { throw new Exception("IP不合法!"); } string[] listIP = sourceString.Split('.'); StringBuilder intIP = new StringBuilder(); for (int i = 0; i < listIP.Length; i++) { string ipPart = listIP[i].ToString(); if (ipPart.Length == 3) { intIP.Append(ipPart); } if (ipPart.Length == 2) { intIP.Append("0" + ipPart); } if (ipPart.Length == 1) { intIP.Append("00" + ipPart); } } return Convert.ToDouble(intIP.ToString()); } /// <summary> /// 正则表达式判断字符串格式 /// </summary> /// <param name="sourceString">要处理的字符串</param> /// <param name="strVerdict">正则表达式</param> /// <returns>返回结果</returns> public static bool FormatVerdict(string sourceString, string strVerdict) { Regex rx = new Regex(strVerdict); return (rx.IsMatch(sourceString)); } /// <summary> /// 从字符串中的尾部删除指定的字符串 /// </summary> /// <param name="sourceString">需要处理的字符串</param> /// <param name="removedString">删除匹配字符串</param> /// <returns>处理后字符串</returns> public static string Remove(string sourceString, string removedString) { try { if (sourceString.IndexOf(removedString) < 0) throw new Exception("原字符串中不包含移除字符串!"); string result = sourceString; int lengthOfSourceString = sourceString.Length; int lengthOfRemovedString = removedString.Length; int startIndex = lengthOfSourceString - lengthOfRemovedString; string tempSubString = sourceString.Substring(startIndex); if (tempSubString.ToUpper() == removedString.ToUpper()) { result = sourceString.Remove(startIndex, lengthOfRemovedString); } return result; } catch { return sourceString; } } /// <summary> /// 获取拆分符右边的字符串 /// </summary> /// <param name="sourceString"></param> /// <param name="splitChar"></param> /// <returns></returns> public static string RightSplit(string sourceString, char splitChar) { string result = null; string[] tempString = sourceString.Split(splitChar); if (tempString.Length > 0) { result = tempString[tempString.Length - 1].ToString(); } return result; } /// <summary> /// 获取拆分符左边的字符串 /// </summary> /// <param name="sourceString"></param> /// <param name="splitChar"></param> /// <returns></returns> public static string LeftSplit(string sourceString, char splitChar) { string result = null; string[] tempString = sourceString.Split(splitChar); if (tempString.Length > 0) { result = tempString[0].ToString(); } return result; } /// <summary> /// 去掉最后一个逗号 /// </summary> /// <param name="origin"></param> /// <returns></returns> public static string DelLastComma(string origin) { if (origin.IndexOf(",") == -1) { return origin; } return origin.Substring(0, origin.LastIndexOf(",")); } /// <summary> /// 删除不可见字符 /// </summary> /// <param name="sourceString"></param> /// <returns></returns> public static string DeleteUnVisibleChar(string sourceString) { System.Text.StringBuilder sBuilder = new System.Text.StringBuilder(131); for (int i = 0; i < sourceString.Length; i++) { int Unicode = sourceString[i]; if (Unicode >= 16) { sBuilder.Append(sourceString[i].ToString()); } } return sBuilder.ToString(); } /// <summary> /// 获取数组元素的合并字符串 /// </summary> /// <param name="stringArray"></param> /// <returns></returns> public static string GetArrayString(string[] stringArray) { string totalString = null; for (int i = 0; i < stringArray.Length; i++) { totalString = totalString + stringArray[i]; } return totalString; } /// <summary> /// 获取某一字符串在字符串数组中出现的次数 /// </summary> /// <param name="stringArray">输入要查询的字符串</param> /// <param name="findString">输入操作字符串</param> /// <returns>返回出现次数</returns> public static int GetStringCount(string[] stringArray, string findString) { int count = -1; string totalString = GetArrayString(stringArray); string subString = totalString; while (subString.IndexOf(findString) >= 0) { subString = totalString.Substring(subString.IndexOf(findString)); count += 1; } return count; } /// <summary> /// 获取某一字符串在字符串中出现的次数 /// </summary> /// <param name="sourceString">输入操作字符串</param> /// <param name="findString">要查询的字符</param> /// <returns>返回出现次数</returns> public static int GetStringCount(string sourceString, string findString) { int count = 0; int findStringLength = findString.Length; string subString = sourceString; while (subString.IndexOf(findString) >= 0) { subString = subString.Substring(subString.IndexOf(findString) + findStringLength); count += 1; } return count; } /// <summary> /// 截取从startString开始到原字符串结尾的所有字符 /// </summary> /// <param name="sourceString">需要操作的字符串</param> /// <param name="startString">开始字符</param> /// <returns>返回结果</returns> public static string GetSubString(string sourceString, string startString) { try { int index = sourceString.ToUpper().IndexOf(startString); if (index > 0) { return sourceString.Substring(index); } return sourceString; } catch { return ""; } } /// <summary> /// 删除从beginRemovedString到 endRemovedString的字符串 /// </summary> /// <param name="sourceString">需要操作的字符串</param> /// <param name="beginRemovedString">开始字符</param> /// <param name="endRemovedString">结束字符</param> /// <returns>返回结果</returns> public static string GetSubString(string sourceString, string beginRemovedString, string endRemovedString) { try { if (sourceString.IndexOf(beginRemovedString) != 0) beginRemovedString = ""; if (sourceString.LastIndexOf(endRemovedString, sourceString.Length - endRemovedString.Length) < 0) endRemovedString = ""; int startIndex = beginRemovedString.Length; int length = sourceString.Length - beginRemovedString.Length - endRemovedString.Length; if (length > 0) { return sourceString.Substring(startIndex, length); } return sourceString; } catch { return sourceString; ; } } /// <summary> /// 按字节数取出字符串的长度 /// </summary> /// <param name="strTmp">要计算的字符串</param> /// <returns>字符串的字节数</returns> public static int GetByteCount(string strTmp) { int intCharCount = 0; for (int i = 0; i < strTmp.Length; i++) { if (System.Text.UTF8Encoding.UTF8.GetByteCount(strTmp.Substring(i, 1)) == 3) { intCharCount = intCharCount + 2; } else { intCharCount = intCharCount + 1; } } return intCharCount; } /// <summary> /// 按字节数要在字符串的位置 /// </summary> /// <param name="intIns">字符串的位置</param> /// <param name="strTmp">要计算的字符串</param> /// <returns>字节的位置</returns> public static int GetByteIndex(int intIns, string strTmp) { int intReIns = 0; if (strTmp.Trim() == "") { return intIns; } for (int i = 0; i < strTmp.Length; i++) { if (System.Text.UTF8Encoding.UTF8.GetByteCount(strTmp.Substring(i, 1)) == 3) { intReIns = intReIns + 2; } else { intReIns = intReIns + 1; } if (intReIns >= intIns) { intReIns = i + 1; break; } } return intReIns; } /// <summary> /// 截取输入最大的字符串 /// </summary> /// <param name="text">输入字符串</param> /// <param name="maxLength">最大长度</param> /// <returns>返回操作结果</returns> public static string InputText(string sourceString, int maxLength) { sourceString = sourceString.Trim(); if (string.IsNullOrEmpty(sourceString)) return string.Empty; if (sourceString.Length > maxLength) sourceString = sourceString.Substring(0, maxLength); sourceString = Regex.Replace(sourceString, "[\\s]{2,}", " "); //two or more spaces sourceString = Regex.Replace(sourceString, "(<[b|B][r|R]/*>)+|(<[p|P](.|\\n)*?>)", "\n"); //<br> sourceString = Regex.Replace(sourceString, "(\\s*&[n|N][b|B][s|S][p|P];\\s*)+", " "); // sourceString = Regex.Replace(sourceString, "<(.|\\n)*?>", string.Empty); //any other tags sourceString = sourceString.Replace("'", "''"); return sourceString; } /// <summary> /// 转义操作 /// </summary> /// <param name="sourceString">输入操作字符串</param> /// <returns>返回操作结果</returns> public static string Encode(string sourceString) { sourceString = sourceString.Replace("'", "'"); sourceString = sourceString.Replace("\"", """); sourceString = sourceString.Replace("<", "<"); sourceString = sourceString.Replace(">", ">"); return sourceString; } /// <summary> /// 反义操作 /// </summary> /// <param name="sourceString">输入操作字符串</param> /// <returns>返回操作结果</returns> public static string Decode(string sourceString) { sourceString = sourceString.Replace(">", ">"); sourceString = sourceString.Replace("<", "<"); sourceString = sourceString.Replace(" ", " "); sourceString = sourceString.Replace(""", "\""); return sourceString; } /// <summary> /// 字符传的转换 用在查询 登陆时 防止恶意的盗取密码 /// </summary> /// <param name="sourceString">输入操作字符串</param> /// <returns>返回操作结果</returns> public static string TBCode(string sourceString) { sourceString = sourceString.Replace("!", ""); sourceString = sourceString.Replace("@", ""); sourceString = sourceString.Replace("#", ""); sourceString = sourceString.Replace("$", ""); sourceString = sourceString.Replace("%", ""); sourceString = sourceString.Replace("^", ""); sourceString = sourceString.Replace("&", ""); sourceString = sourceString.Replace("*", ""); sourceString = sourceString.Replace("(", ""); sourceString = sourceString.Replace(")", ""); sourceString = sourceString.Replace("_", ""); sourceString = sourceString.Replace("+", ""); sourceString = sourceString.Replace("|", ""); sourceString = sourceString.Replace("?", ""); sourceString = sourceString.Replace("/", ""); sourceString = sourceString.Replace(".", ""); sourceString = sourceString.Replace(">", ""); sourceString = sourceString.Replace("<", ""); sourceString = sourceString.Replace("{", ""); sourceString = sourceString.Replace("}", ""); sourceString = sourceString.Replace("[", ""); sourceString = sourceString.Replace("]", ""); sourceString = sourceString.Replace("-", ""); sourceString = sourceString.Replace("=", ""); sourceString = sourceString.Replace(",", ""); return sourceString; } } }
|
请发表评论