using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace Common { /// <summary> /// 字符串操作类 /// </summary> public class StringHelper { public StringHelper() { } /// <summary> /// 出错时弹出提示对话框 /// </summary> /// <param name="str_Control_Name">检验控件id值</param> /// <param name="str_Form_Name">表单id值</param> /// <param name="str_Prompt">提示信息</param> /// <returns>string</returns> public static string JsIsNull(string str_Control_Name, string str_Form_Name, string str_Prompt) { return "<script language=\"javascript\">alert('" + str_Prompt + "');document." + str_Form_Name + "." + str_Control_Name + ".focus(); document." + str_Form_Name + "." + str_Control_Name + ".select();</" + "script>"; } /// <summary> /// 出错时弹出提示对话框 /// </summary> /// <param name="str_Prompt">提示信息</param> /// <returns>string</returns> public static string JsIsNull(string str_Prompt) { return "<script language=\"javascript\">alert('" + str_Prompt + "');</" + "script>"; } /// <summary> /// 关闭对话框 /// </summary> /// <param name="str_Prompt">提示信息</param> /// <returns>string</returns> public static string CloseParent(string str_Prompt) { return "<script language=\"javascript\">alert('" + str_Prompt + "');window.parent.close();</" + "script>"; } /// <summary> /// 出错时弹出提示对话框--关闭窗口 /// </summary> /// <param name="str_Prompt">提示信息</param> /// <param name="isReLoad">true为上个窗口自动刷新</param> /// <returns>string</returns> public static string JsIsNull(string str_Prompt, bool isReLoad) { if (isReLoad) { return "<script language=\"javascript\">alert('" + str_Prompt + "');opener.window.document.location.reload();window.close();</" + "script>"; } else { return "<script language=\"javascript\">alert('" + str_Prompt + "');window.close();</" + "script>"; } } /// <summary> ///是否关闭窗口 /// </summary> /// <param name="str_Prompt">提示信息</param> /// <param name="isClose">true为关闭</param> /// <returns>string</returns> public static string JsIsClose(string str_Prompt, bool isClose) { if (!isClose) { return "<script language=\"javascript\">alert('" + str_Prompt + "');</" + "script>"; } else { return "<script language=\"javascript\">alert('" + str_Prompt + "');window.close();opener.window.document.location.reload();</" + "script>"; } } /// <summary> /// 弹出信息并重装窗口 /// </summary> /// <param name="str_Prompt">提示信息</param> /// <param name="reLoadPath">重装路径</param> /// <returns>string</returns> public static string JsIsReLoad(string str_Prompt, string reLoadPath) { return "<script language=\"javascript\">alert('" + str_Prompt + "');this.window.document.location.reload('" + reLoadPath + "');</" + "script>"; } /// <summary> /// 重装窗口 /// </summary> /// <param name="reLoadPath">提示信息</param> /// <returns>string</returns> public static string JsIsReLoad(string reLoadPath) { return "<script language=\"javascript\">this.window.document.location.reload('" + reLoadPath + "');</" + "script>"; } /// <summary> /// 获得一个16位时间随机数 /// </summary> /// <returns>返回随机数</returns> public static string GetDataRandom() { string strData = DateTime.Now.ToString(); strData = strData.Replace(":", ""); strData = strData.Replace("-", ""); strData = strData.Replace(" ", ""); Random r = new Random(); strData = strData + r.Next(100000); return strData; } /// <summary> /// 获得某个字符串在另个字符串中出现的次数 /// </summary> /// <param name="strOriginal">要处理的字符</param> /// <param name="strSymbol">符号</param> /// <returns>返回值</returns> public static int GetStrCount(string strOriginal, string strSymbol) { int count = 0; for (int i = 0; i < (strOriginal.Length - strSymbol.Length + 1); i++) { if (strOriginal.Substring(i, strSymbol.Length) == strSymbol) { count = count + 1; } } return count; } /// <summary> /// 获得某个字符串在另个字符串第一次出现时前面所有字符 /// </summary> /// <param name="strOriginal">要处理的字符</param> /// <param name="strSymbol">符号</param> /// <returns>返回值</returns> public static string GetFirstStr(string strOriginal, string strSymbol) { int strPlace = strOriginal.IndexOf(strSymbol); if (strPlace != -1) strOriginal = strOriginal.Substring(0, strPlace); return strOriginal; } /// <summary> /// 获得某个字符串在另个字符串最后一次出现时后面所有字符 /// </summary> /// <param name="strOriginal">要处理的字符</param> /// <param name="strSymbol">符号</param> /// <returns>返回值</returns> public static string GetLastStr(string strOriginal, string strSymbol) { int strPlace = strOriginal.LastIndexOf(strSymbol) + strSymbol.Length; strOriginal = strOriginal.Substring(strPlace); return strOriginal; } /// <summary> /// 获得两个字符之间第一次出现时前面所有字符 /// </summary> /// <param name="strOriginal">要处理的字符</param> /// <param name="strFirst">最前哪个字符</param> /// <param name="strLast">最后哪个字符</param> /// <returns>返回值</returns> public static string GetTwoMiddleFirstStr(string strOriginal, string strFirst, string strLast) { strOriginal = GetFirstStr(strOriginal, strLast); strOriginal = GetLastStr(strOriginal, strFirst); return strOriginal; } /// <summary> /// 获得两个字符之间最后一次出现时的所有字符 /// </summary> /// <param name="strOriginal">要处理的字符</param> /// <param name="strFirst">最前哪个字符</param> /// <param name="strLast">最后哪个字符</param> /// <returns>返回值</returns> public static string GetTwoMiddleLastStr(string strOriginal, string strFirst, string strLast) { strOriginal = GetLastStr(strOriginal, strFirst); strOriginal = GetFirstStr(strOriginal, strLast); return strOriginal; } /// <summary> /// 从数据库表读记录时,能正常显示 /// </summary> /// <param name="strContent">要处理的字符</param> /// <returns>返回正常值</returns> public static string GetHtmlFormat(string strContent) { strContent = strContent.Trim(); if (strContent == null) { return ""; } strContent = strContent.Replace("<", "<"); strContent = strContent.Replace(">", ">"); strContent = strContent.Replace("\n", "<br />"); return (strContent); } /// <summary> /// 检查相等之后,获得字符串 /// </summary> /// <param name="str">字符串1</param> /// <param name="checkStr">字符串2</param> /// <param name="reStr">相等之后要返回的字符串</param> /// <returns>返回字符串</returns> public static string GetCheckStr(string str, string checkStr, string reStr) { if (str == checkStr) { return reStr; } return ""; } /// <summary> /// 检查相等之后,获得字符串 /// </summary> /// <param name="str">数值1</param> /// <param name="checkStr">数值2</param> /// <param name="reStr">相等之后要返回的字符串</param> /// <returns>返回字符串</returns> public static string GetCheckStr(int str, int checkStr, string reStr) { if (str == checkStr) { return reStr; } return ""; } /// <summary> /// 检查相等之后,获得字符串 /// </summary> /// <param name="str"></param> /// <param name="checkStr"></param> /// <param name="reStr"></param> /// <returns></returns> public static string GetCheckStr(bool str, bool checkStr, string reStr) { if (str == checkStr) { return reStr; } return ""; } /// <summary> /// 检查相等之后,获得字符串 /// </summary> /// <param name="str"></param> /// <param name="checkStr"></param> /// <param name="reStr"></param> /// <returns></returns> public static string GetCheckStr(object str, object checkStr, string reStr) { if (str == checkStr) { return reStr; } return ""; } /// <summary> /// 截取左边规定字数字符串,超过字数用endStr结束 /// </summary> /// <param name="str">需截取字符串</param> /// <param name="length">截取字数</param> /// <param name="endStr">超过字数,结束字符串,如"..."</param> /// <returns>返回截取字符串</returns> public static string GetLeftStr(string str, int length, string endStr) { string reStr; if (length < GetStrLength(str)) { reStr = str.Substring(0, length) + endStr; } else { reStr = str; } return reStr; } /// <summary> /// 截取左边规定字数字符串,超过字数用...结束 /// </summary> /// <param name="str">需截取字符串</param> /// <param name="length">截取字数</param> /// <returns>返回截取字符串</returns> public static string GetLeftStr(string str, int length) { string reStr; if (length < str.Length) { reStr = str.Substring(0, length) + "..."; } else { reStr = str; } return reStr; } /// <summary> /// 截取左边规定字数字符串,超过字数用...结束 /// </summary> /// <param name="str">需截取字符串</param> /// <param name="length">截取字数</param> /// <param name="subcount">若超过字数右边减少的字符长度</param> /// <returns>返回截取字符串</returns> public static string GetLeftStr(string str, int length,int subcount) { string reStr; if (length < str.Length) { reStr = str.Substring(0, length-subcount) + "..."; } else { reStr = str; } return reStr; } /// <summary> /// 获得双字节字符串的字节数 /// </summary> /// <param name="str">要检测的字符串</param> /// <returns>返回字节数</returns> public static int GetStrLength(string str) { ASCIIEncoding n = new ASCIIEncoding(); byte[] b = n.GetBytes(str); int l = 0; // l 为字符串之实际长度 for (int i = 0; i < b.Length; i++) { if (b[i] == 63) //判断是否为汉字或全脚符号 { l++; } l++; } return l; } /// <summary> /// 剥去HTML标签 /// </summary> /// <param name="text">带有HTML格式的字符串</param> /// <returns>string</returns> public static string RegStripHtml(string text) { string reStr; string RePattern = @"<\s*(\S+)(\s[^>]*)?>"; reStr = Regex.Replace(text, RePattern, string.Empty, RegexOptions.Compiled); reStr = Regex.Replace(reStr, @"\s+", string.Empty, RegexOptions.Compiled); return reStr; } /// <summary> /// 使Html失效,以文本显示 /// </summary> /// <param name="str">原字符串</param> /// <returns>失效后字符串</returns> public static string ReplaceHtml(string str) { str = str.Replace("<", "<"); return str; } /// <summary> /// 获得随机数字 /// </summary> /// <param name="Length">随机数字的长度</param> /// <returns>返回长度为 Length 的 <see cref="System.Int32"/> 类型的随机数</returns> /// <example> /// Length 不能大于9,以下为示例演示了如何调用 GetRandomNext:<br /> /// <code> /// int le = GetRandomNext(8); /// </code> /// </example> public static int GetRandomNext(int Length) { if (Length > 9) throw new System.IndexOutOfRangeException("Length的长度不能大于10"); Guid gu = Guid.NewGuid(); string str = ""; for (int i = 0; i < gu.ToString().Length; i++) { if (isNumber(gu.ToString()[i])) { str += ((gu.ToString()[i])); } } int guid = int.Parse(str.Replace("-", "").Substring(0, Length)); if (!guid.ToString().Length.Equals(Length)) guid = GetRandomNext(Length); return guid; } /// <summary> /// 返回一个 bool 值,指明提供的值是不是整数 /// </summary> /// <param name="obj">要判断的值</param> /// <returns>true[是整数]false[不是整数]</returns> /// <remarks> /// isNumber 只能判断正(负)整数,如果 obj 为小数则返回 false; /// </remarks> /// <example> /// 下面的示例演示了判断 obj 是不是整数:<br /> /// <code> /// bool flag; /// flag = isNumber("200"); /// </code> /// </example> public static bool isNumber(object obj) { //为指定的正则表达式初始化并编译 Regex 类的实例 System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex(@"^-?(\d*){1}quot;); //在指定的输入字符串中搜索 Regex 构造函数中指定的正则表达式匹配项 System.Text.RegularExpressions.Match mc = rg.Match(obj.ToString()); //指示匹配是否成功 return (mc.Success); } /// <summary> /// 高亮显示 /// </summary> /// <param name="str">原字符串</param> /// <param name="findstr">查找字符串</param> /// <param name="cssclass">Style</param> /// <returns>string</returns> public static string OutHighlightText(string str, string findstr, string cssclass) { if (findstr != "") { string text1 = "<span class=\"" + cssclass + "\">%s</span>"; str = str.Replace(findstr, text1.Replace("%s", findstr)); } return str; } /// <summary> /// 移除字符串首尾某些字符 /// </summary> /// <param name="strOriginal">要操作的字符串</param> /// <param name="startStr">要在字符串首部移除的字符串</param> /// <param name="endStr">要在字符串尾部移除的字符串</param> /// <returns>string</returns> public static string RemoveStartOrEndStr(string strOriginal, string startStr,string endStr) { char[] start=startStr.ToCharArray(); char[] end=endStr.ToCharArray(); return strOriginal.TrimStart(start).TrimEnd(end); } /// <summary> /// 删除指定位置指定长度字符串 /// </summary> /// <param name="strOriginal">要操作的字符串</param> /// <param name="startIndex">开始删除字符的位置</param> /// <param name="count">要删除的字符数</param> /// <returns>string</returns> public static string RemoveStr(string strOriginal,int startIndex, int count) { return strOriginal.Remove(startIndex, count); } /// <summary> /// 从左边填充字符串 /// </summary> /// <param name="strOriginal">要操作的字符串</param> /// <param name="totalWidth">结果字符串中的字符数</param> /// <param name="paddingChar">填充的字符</param> /// <returns>string</returns> public static string LeftPadStr(string strOriginal, int totalWidth, char paddingChar) { if(strOriginal.Length<totalWidth) return strOriginal.PadLeft(totalWidth, paddingChar); return strOriginal; } /// <summary> /// 从右边填充字符串 /// </summary> /// <param name="strOriginal">要操作的字符串</param> /// <param name="totalWidth">结果字符串中的字符数</param> /// <param name="paddingChar">填充的字符</param> /// <returns>string</returns> public static string RightPadStr(string strOriginal, int totalWidth, char paddingChar) { if (strOriginal.Length < totalWidth) return strOriginal.PadRight(totalWidth, paddingChar); return strOriginal; } } }