海东的技术资料
博客园
::
首页
:: ::
联系
::
订阅
::
管理
::
205 随笔 :: 22 文章 :: 692 评论 :: 68 引用
C#函数实现的小功能
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
==================
子窗体返回主窗体
/**/
///
<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+$