C#中Split分隔字符串的应用 1、用字符串分隔: using System.Text.RegularExpressions; string str="aaajsbbbjsccc";string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);foreach (string i in sArray) Response.Write(i.ToString() + "<br>");输出结果:aaabbbccc 2、用多个字符来分隔:string str="aaajbbbscccjdddseee";string[] sArray=str.Split(new char[2]{'j','s'}); foreach(string i in sArray) Response.Write(i.ToString() + "<br>"); 输出结果:aaabbbcccdddeee 3、用单个字符来分隔:string str="aaajbbbjccc";string[] sArray=str.Split('j');foreach(string i in sArray) Response.Write(i.ToString() + "<br>");输出结果:aaabbbccc ==================子窗体返回主窗体 /**////<summary> ///名称:redirect ///功能:子窗体返回主窗体 ///参数:url ///返回值:空 ///</summary> public void redirect(string url,Page page) { if ( Session["IfDefault"]!=(object)"Default") { page.RegisterStartupScript("","<script>window.top.document.location.href='"+url+"';</script>"); } } 判断是否为数字 /**//// <summary> /// 名称:IsNumberic /// 功能:判断输入的是否是数字 /// 参数:string oText:源文本 /// 返回值: bool true:是 false:否 /// </summary> public bool IsNumberic(string oText) { try { int var1=Convert.ToInt32 (oText); return true; } catch { return false; } } 获得字符串实际长度(包括中文字符) //获得字符串oString的实际长度 public int StringLength(string oString) { byte[] strArray=System.Text .Encoding.Default .GetBytes (oString); int res=strArray.Length ; return res; } 将回车转换为TAB //当在有keydown事件的控件上敲回车时,变为tab public void Tab(System.Web .UI.WebControls .WebControl webcontrol) { webcontrol.Attributes .Add ("onkeydown", "if(event.keyCode==13) event.keyCode=9"); } datagrid分页中如果删除时出现超出索引 public void jumppage(System.Web.UI.WebControls.DataGrid dg) { int int_PageLess; //定义页面跳转的页数 //如果当前页是最后一页 if(dg.CurrentPageIndex == dg.PageCount-1) { //如果就只有一页 if(dg.CurrentPageIndex == 0) { //删除后页面停在当前页 dg.CurrentPageIndex = dg.PageCount-1; } else { //如果最后一页只有一条记录 if((dg.Items.Count % dg.PageSize == 1) || dg.PageSize == 1) { //把最后一页最后一条记录删除后,页面应跳转到前一页 int_PageLess = 2; } else //如果最后一页的记录数大于1,那么在最后一页删除记录后仍然停在当前页 { int_PageLess = 1; } dg.CurrentPageIndex = dg.PageCount - int_PageLess; } } }*///Base64编码public string EncodeBase64(string code_type,string code) { string encode = ""; byte[] bytes = Encoding.GetEncoding(code_type).GetBytes(code); try { encode = Convert.ToBase64String(bytes); } catch { encode = code; } return encode; } c#的一些字符串的经验//获得汉字的区位码 byte[] array = new byte[2]; array = System.Text.Encoding.Default.GetBytes("啊"); int i1 = (short)(array[0] - '\0'); int i2 = (short)(array[1] - '\0'); //unicode解码方式下的汉字码 array = System.Text.Encoding.Unicode.GetBytes("啊"); i1 = (short)(array[0] - '\0'); i2 = (short)(array[1] - '\0'); //unicode反解码为汉字 string str = "4a55"; string s1 = str.Substring(0,2); string s2 = str.Substring(2,2); int t1 = Convert.ToInt32(s1,16); int t2 = Convert.ToInt32(s2,16); array[0] = (byte)t1; array[1] = (byte)t2; string s = System.Text.Encoding.Unicode.GetString(array); //default方式反解码为汉字 array[0] = (byte)196; array[1] = (byte)207; s = System.Text.Encoding.Default.GetString(array); //取字符串长度 s = "iam方枪枪"; int len = s.Length;//will output as 6 byte[] sarr = System.Text.Encoding.Default.GetBytes(s); len = sarr.Length;//will output as 3+3*2=9 //字符串相加 System.Text.StringBuilder sb = new System.Text.StringBuilder(""); sb.Append("i "); sb.Append("am "); sb.Append("方枪枪"); string fox; fox.ToLower()转化成小写字母 fox.ToUpper()转化成大写字母 fox.Trim()删除前后空格 fox.Trim(trimChars)删除其它字符 fox.TrimStart()删除前空格 fox.TrimEnd()删除后空格 fox.PadLeft(10)增加左边空格,使字串达到某长度。 fox.PadRight(10)增加右边空格,使字串达到某长度。 fox.PadX(10,'-')增加其它字符,使字串达到某长度。X指:Left/Right fox.Split(' ')将字串分解成数组 //格式化 string sf=string.Format("{0}年{1}月{2}日 {3}时{4}分",temp.Year,temp.Month,temp.Day,currTime.TruantTime.Hour,currTime.TruantTime.Minute); //一些正则表达式 Internet地址表达式 http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? Email地址表达式 \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 邮编 \d{6} 电话号码 (\(\d{3}\)|\d{3}-)?\d{8} //分隔字符串 string total="aaa,bbb,ccc,dddd"; string[]strArray; char[]charArray=new char[]{','}; strArray=total.Split(charArray); //日期 DateTime t1 = new DateTime(2002,5,30); DateTime t2 = new DateTime(2002,5,23); TimeSpan diff=t1-t2; MessageBox.Show(diff.Days.ToString( System.DateTime.Now.ToString() DateTime d1=Convert.ToDateTime("2003-01-01 18:20:01"); string s=d1.ToString("yyyy-MM-dd HH:mm:ss"); //目录 Environment.CurrentDirectory Application.StartupPath //Base64解码public string DecodeBase64(string code_type,string code) { string decode = ""; byte[] bytes = Convert.FromBase64String(code); try { decode = Encoding.GetEncoding(code_type).GetString(bytes); } catch { decode = code; } return decode; }//将querystirng转换成url:public static string GetRedirectUrl(NameValueCollection queryString) { string redirectUrl = string.Empty; int counter = 0; foreach(string key in queryString.Keys) { redirectUrl += string.Format("{0}{1}={2}", (counter>0)?"&":"", key, queryString[key]); counter++; } return redirectUrl; } }} 一. 显示消息对话框类 做项目时总免不了要弹出对话框,或提示用户,或做用户确认。像WinForm下的MessageBox一样很方便,但web下是不是也可以实现呢,答案是肯定的,我简单总结了一下并封装到类,在项目里像WinForm的MessageBox那样直接调用就可以,也可以把它编译成dll作为组件直接调用,并且它也没有弹出对话框时的大白屏现象:)。 /**//// <summary> /// 显示消息提示对话框。 /// 2005.10.1 /// </summary> public class MessageBox { private MessageBox() { } /**//// <summary> /// 显示消息提示对话框 /// </summary> /// <param name=page>当前页面指针,一般为this</param> /// <param name=msg>提示信息</param> public static void Show(System.Web.UI.Page page,string msg) { page.RegisterStartupScript(message,<script language='javascript' defer>alert('+msg.ToString()+');</script>); } /**//// <summary> /// 控件点击消息确认提示框 /// </summary> /// <param name=page>当前页面指针,一般为this</param> /// <param name=msg>提示信息</param> public static void ShowConfirm(System.Web.UI.WebControls.WebControl Control,string msg) { //Control.Attributes.Add(onClick,if (!window.confirm('+msg+')){return false;}); Control.Attributes.Add(onclick, return confirm(' + msg + ');) ; } /**//// <summary> /// 显示消息提示对话框,并进行页面跳转 /// </summary> /// <param name=page>当前页面指针,一般为this</param> /// <param name=msg>提示信息</param> /// <param name=url>跳转的目标URL</param> public static void ShowAndRedirect(System.Web.UI.Page page,string msg,string url) { StringBuilder Builder=new StringBuilder(); Builder.Append(<script language='javascript' defer>); Builder.AppendFormat(alert('{0}');,msg); Builder.AppendFormat(top.location.href='{0}',url); Builder.Append(</script>); page.RegisterStartupScript(message,Builder.ToString()); } /**//// <summary> /// 输出自定义脚本信息 /// </summary> /// <param name=page>当前页面指针,一般为this</param> /// <param name=script>输出脚本</param> public static void ResponseScript(System.Web.UI.Page page,string script) { page.RegisterStartupScript(message,<script language='javascript' defer>+script+</script>); } }二.页面数据验证类做项目,特别做MIS,更避免不了有用户输入数据需要做有效性验证,这里我总结封装了一个页面数据校验的工具类,用起来也是很方便。 /**//// <summary> /// 页面数据校验类 /// 李天平 /// 2004.8 /// </summary> public class PageValidate { private static Regex RegNumber = new Regex(^[0-9]+$); private static Regex RegNumberSign = new Regex(^[+-]?[0-9]+$); private static Regex RegDecimal = new Regex(^[0-9]+[.]?[0-9]+$); private static Regex RegDecimalSign = new Regex(^[+-]?[0-9]+[.]?[0-9]+$); //等价于^[+-]?\d+[.]?\d+$ private static Regex RegEmail = new Regex(^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil|tv|biz|info)$);//w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样 private static Regex RegCHZN = new Regex([\u4e00-\u9fa5]); public PageValidate() { } 数字字符串检查#region 数字字符串检查 /**//// <summary> /// 检查Request查询字符串的键值,是否是数字,最大长度限制 /// </summary> /// <param name=req>Request</param> /// <param name=inputKey>Request的键值</param> /// <param name=maxLen>最大长度</param> /// <returns>返回Request查询字符串</returns> public static string FetchInputDigit(HttpRequest req, string inputKey, int maxLen) { string retVal = string.Empty; if(inputKey != null && inputKey != string.Empty) { retVal = req.QueryString[inputKey]; if(null == retVal) retVal = req.Form[inputKey]; if(null != retVal) { retVal = SqlText(retVal, maxLen); if(!IsNumber(retVal)) retVal = string.Empty; } } if(retVal == null) retVal = string.Empty; return retVal; } /**//// <summary> /// 是否数字字符串 /// </summary> /// <param name=inputData>输入字符串</param> /// <returns></returns> public static bool IsNumber(string inputData) { Match m = RegNumber.Match(inputData); return m.Success; } /**//// <summary> /// 是否数字字符串可带正负号 /// </summary> /// <param name=inputData>输入字符串</param> /// <returns></returns> public static bool IsNumberSign(string inputData) { Match m = RegNumberSign.Match(inputData); return m.Success; } /**//// <summary> /// 是否是浮点数 /// </summary> /// <param name=inputData>输入字符串</param> /// <returns></returns> public static bool IsDecimal(string inputData) { Match m = RegDecimal.Match(inputData); return m.Success; } /**//// <summary> /// 是否是浮点数可带正负号 /// </summary> /// <param name=inputData>输入字符串</param> /// <returns></returns> public static bool IsDecimalSign(string inputData) { Match m = RegDecimalSign.Match(inputData); return m.Success; } #endregion 中文检测#region 中文检测 /**//// <summary> /// 检测是否有中文字符 /// </summary> /// <param name=inputData></param> /// <returns></returns> public static bool IsHasCHZN(string inputData) { Match m = RegCHZN.Match(inputData); return m.Success; } #endregion 邮件地址#region 邮件地址 /**//// <summary> /// 是否是浮点数可带正负号 /// </summary> /// <param name=inputData>输入字符串</param> /// <returns></returns> public static bool IsEmail(string inputData) { Match m = RegEmail.Match(inputData); return m.Success; } #endregion 其他#region 其他 /**//// <summary> /// 检查字符串最大长度,返回指定长度的串 /// </summary> /// <param name=sqlInput>输入字符串</param> /// <param name=maxLength>最大长度</param> /// <returns></returns> public static string SqlText(string sqlInput, int maxLength) { if(sqlInput != null && sqlInput != string.Empty) { sqlInput = sqlInput.Trim(); if(sqlInput.Length > maxLength)//按最大长度截取字符串 sqlInput = sqlInput.Substring(0, maxLength); } return sqlInput; } /**//// <summary> /// 字符串编码 /// </summary> /// <param name=inputData></param> /// <returns></returns> public static string HtmlEncode(string inputData) { return HttpUtility.HtmlEncode(inputData); } /**//// <summary> /// 设置Label显示Encode的字符串 /// </summary> /// <param name=lbl></param> /// <param name=txtInput></param> public static void SetLabel(Label lbl, string txtInput) { lbl.Text = HtmlEncode(txtInput); } public static void SetLabel(Label lbl, object inputObj) { SetLabel(lbl, inputObj.ToString()); } #endregion } 在Textbox的輸入中﹐我們常常需要控制輸入的類型﹐比如說只能輸入數字﹐當然實現的方法很多﹐我總結了一下我做過的一些項目﹐我常會使用以下這三種﹕1﹑使用TryCatch private static bool IsNumeric(string itemValue,int intFLag) { try { int i = Convert.ToInt32(itemValue); return true; } catch { return false; } }2﹑使用正則表達式using System.Text.RegularExpressions; private static bool IsNumeric(string itemValue) { return (IsRegEx("^(-?[0-9]*[.]*[0-9]{0,3})$", itemValue)); } private static bool IsRegEx(string regExValue, string itemValue) { try { Regex regex = new System.Text.RegularExpressions.Regex(regExValue); if (regex.IsMatch(itemValue)) return true; else return false; } catch (Exception ) { return false; } finally { } }3﹑判斷輸入的keyCode public static bool IsNumeric(System.Windows.Forms.KeyPressEventArgs e) { if ((e.KeyChar >= (char)48 && e.KeyChar<=(char)57) || e.KeyChar ==(char)8 || e.KeyChar ==(char)45 || e.KeyChar ==(char)47) { } else { e.Handled=true; } return true; }