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> " );
输出结果:
aaa
bbb
ccc
2 、用多个字符来分隔:
string str = " aaajbbbscccjdddseee " ;
string [] sArray = str.Split( new char [ 2 ] {'j','s'} );
foreach ( string i in sArray) Response.Write(i.ToString() + " <br> " );
输出结果:
aaa
bbb
ccc
ddd
eee
3 、用单个字符来分隔:
string str = " aaajbbbjccc " ;
string [] sArray = str.Split( ' j ' );
foreach ( string i in sArray) Response.Write(i.ToString() + " <br> " );
输出结果:
aaa
bbb
ccc
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> " );
输出结果:
aaa
bbb
ccc
2 、用多个字符来分隔:
string str = " aaajbbbscccjdddseee " ;
string [] sArray = str.Split( new char [ 2 ] {'j','s'} );
foreach ( string i in sArray) Response.Write(i.ToString() + " <br> " );
输出结果:
aaa
bbb
ccc
ddd
eee
3 、用单个字符来分隔:
string str = " aaajbbbjccc " ;
string [] sArray = str.Split( ' j ' );
foreach ( string i in sArray) Response.Write(i.ToString() + " <br> " );
输出结果:
aaa
bbb
ccc
==================
子窗体返回主窗体
///<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;
}
}
}
子窗体返回主窗体
///<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()
{
}
数字字符串检查
中文检测
邮件地址
其他
}
做项目时总免不了要弹出对话框,或提示用户,或做用户确认。像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()
{
}
数字字符串检查
中文检测
邮件地址
其他
}
在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;
}
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;
}
本文转自高海东博客园博客,原文链接http://www.cnblogs.com/ghd258/archive/2005/10/12/253061.html,如需转载请自行联系原作者