zoukankan
html css js c++ java
C# 字符串处理一些方法
Code
public
class
Utils
{
private
static
Regex RegexBr
=
new
Regex(
@"
(\r\n)
"
, RegexOptions.IgnoreCase);
public
static
Regex RegexFont
=
new
Regex(
@"
<font color=
"
+
"
\
"
.
*?
\
""
+
@"
>([\s\S]+?)</font>
"
, Method.Utils.GetRegexCompiledOptions());
private
static
FileVersionInfo AssemblyFileVersion
=
FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
private
static
string
TemplateCookieName
=
string
.Format(
"
dnttemplateid_{0}_{1}_{2}
"
, AssemblyFileVersion.FileMajorPart, AssemblyFileVersion.FileMinorPart, AssemblyFileVersion.FileBuildPart);
/**/
///
<summary>
///
得到正则编译参数设置
///
</summary>
///
<returns></returns>
public
static
RegexOptions GetRegexCompiledOptions()
{
return
RegexOptions.None;
}
字符处理
#region
字符处理
/**/
///
<summary>
///
返回字符串真实长度, 1个汉字长度为2
///
</summary>
///
<returns></returns>
public
static
int
GetStringLength(
string
str)
{
return
Encoding.Default.GetBytes(str).Length;
}
/**/
///
<summary>
///
字符串中是否包含指定的字符
///
</summary>
///
<param name="str">
被包含的字符
</param>
///
<param name="stringarray">
字符串
</param>
///
<param name="strsplit">
字符分隔符
</param>
///
<returns>
包含返回true,否则返回false
</returns>
public
static
bool
IsCompriseStr(
string
str,
string
stringarray,
string
strsplit)
{
if
(stringarray
==
""
||
stringarray
==
null
)
{
return
false
;
}
str
=
str.ToLower();
string
[] stringArray
=
Utils.SplitString(stringarray.ToLower(), strsplit);
for
(
int
i
=
0
; i
<
stringArray.Length; i
++
)
{
//
string t1 = str;
//
string t2 = stringArray[i];
if
(str.IndexOf(stringArray[i])
>
-
1
)
{
return
true
;
}
}
return
false
;
}
/**/
///
<summary>
///
判断指定字符串在指定字符串数组中的位置
///
</summary>
///
<param name="strSearch">
字符串
</param>
///
<param name="stringArray">
字符串数组
</param>
///
<param name="caseInsensetive">
是否不区分大小写, true为不区分, false为区分
</param>
///
<returns>
字符串在指定字符串数组中的位置, 如不存在则返回-1
</returns>
public
static
int
GetInArrayID(
string
strSearch,
string
[] stringArray,
bool
caseInsensetive)
{
for
(
int
i
=
0
; i
<
stringArray.Length; i
++
)
{
if
(caseInsensetive)
{
if
(strSearch.ToLower()
==
stringArray[i].ToLower())
{
return
i;
}
}
else
{
if
(strSearch
==
stringArray[i])
{
return
i;
}
}
}
return
-
1
;
}
/**/
///
<summary>
///
判断指定字符串在指定字符串数组中的位置
///
</summary>
///
<param name="strSearch">
字符串
</param>
///
<param name="stringArray">
字符串数组
</param>
///
<returns>
字符串在指定字符串数组中的位置, 如不存在则返回-1
</returns>
public
static
int
GetInArrayID(
string
strSearch,
string
[] stringArray)
{
return
GetInArrayID(strSearch, stringArray,
true
);
}
/**/
///
<summary>
///
判断指定字符串是否属于指定字符串数组中的一个元素
///
</summary>
///
<param name="strSearch">
字符串
</param>
///
<param name="stringArray">
字符串数组
</param>
///
<param name="caseInsensetive">
是否不区分大小写, true为不区分, false为区分
</param>
///
<returns>
判断结果
</returns>
public
static
bool
InArray(
string
strSearch,
string
[] stringArray,
bool
caseInsensetive)
{
return
GetInArrayID(strSearch, stringArray, caseInsensetive)
>=
0
;
}
/**/
///
<summary>
///
判断指定字符串是否属于指定字符串数组中的一个元素
///
</summary>
///
<param name="str">
字符串
</param>
///
<param name="stringarray">
字符串数组
</param>
///
<returns>
判断结果
</returns>
public
static
bool
InArray(
string
str,
string
[] stringarray)
{
return
InArray(str, stringarray,
false
);
}
/**/
///
<summary>
///
判断指定字符串是否属于指定字符串数组中的一个元素
///
</summary>
///
<param name="str">
字符串
</param>
///
<param name="stringarray">
内部以逗号分割单词的字符串
</param>
///
<returns>
判断结果
</returns>
public
static
bool
InArray(
string
str,
string
stringarray)
{
return
InArray(str, SplitString(stringarray,
"
,
"
),
false
);
}
/**/
///
<summary>
///
判断指定字符串是否属于指定字符串数组中的一个元素
///
</summary>
///
<param name="str">
字符串
</param>
///
<param name="stringarray">
内部以逗号分割单词的字符串
</param>
///
<param name="strsplit">
分割字符串
</param>
///
<returns>
判断结果
</returns>
public
static
bool
InArray(
string
str,
string
stringarray,
string
strsplit)
{
return
InArray(str, SplitString(stringarray, strsplit),
false
);
}
/**/
///
<summary>
///
判断指定字符串是否属于指定字符串数组中的一个元素
///
</summary>
///
<param name="str">
字符串
</param>
///
<param name="stringarray">
内部以逗号分割单词的字符串
</param>
///
<param name="strsplit">
分割字符串
</param>
///
<param name="caseInsensetive">
是否不区分大小写, true为不区分, false为区分
</param>
///
<returns>
判断结果
</returns>
public
static
bool
InArray(
string
str,
string
stringarray,
string
strsplit,
bool
caseInsensetive)
{
return
InArray(str, SplitString(stringarray, strsplit), caseInsensetive);
}
/**/
///
<summary>
///
删除字符串尾部的回车/换行/空格
///
</summary>
///
<param name="str"></param>
///
<returns></returns>
public
static
string
RTrim(
string
str)
{
for
(
int
i
=
str.Length; i
>=
0
; i
--
)
{
if
(str[i].Equals(
"
"
)
||
str[i].Equals(
"
\r
"
)
||
str[i].Equals(
"
\n
"
))
{
str.Remove(i,
1
);
}
}
return
str;
}
/**/
///
<summary>
///
清除给定字符串中的回车及换行符
///
</summary>
///
<param name="str">
要清除的字符串
</param>
///
<returns>
清除后返回的字符串
</returns>
public
static
string
ClearBR(
string
str)
{
//
Regex r = null;
Match m
=
null
;
//
r = new Regex(@"(\r\n)",RegexOptions.IgnoreCase);
for
(m
=
RegexBr.Match(str); m.Success; m
=
m.NextMatch())
{
str
=
str.Replace(m.Groups[
0
].ToString(),
""
);
}
return
str;
}
/**/
///
<summary>
///
自定义的替换字符串函数
///
</summary>
public
static
string
ReplaceString(
string
SourceString,
string
SearchString,
string
ReplaceString,
bool
IsCaseInsensetive)
{
return
Regex.Replace(SourceString, Regex.Escape(SearchString), ReplaceString, IsCaseInsensetive
?
RegexOptions.IgnoreCase : RegexOptions.None);
}
/**/
///
<summary>
///
生成指定数量的html空格符号
///
</summary>
public
static
string
Spaces(
int
nSpaces)
{
StringBuilder sb
=
new
StringBuilder();
for
(
int
i
=
0
; i
<
nSpaces; i
++
)
{
sb.Append(
"
"
);
}
return
sb.ToString();
}
/**/
///
<summary>
///
清理字符串
///
</summary>
public
static
string
CleanInput(
string
strIn)
{
return
Regex.Replace(strIn.Trim(),
@"
[^\w\.@-]
"
,
""
);
}
/**/
///
<summary>
///
分割字符串
///
</summary>
public
static
string
[] SplitString(
string
strContent,
string
strSplit)
{
if
(strContent.IndexOf(strSplit)
<
0
)
{
string
[] tmp
=
{ strContent }
;
return
tmp;
}
return
Regex.Split(strContent, Regex.Escape(strSplit), RegexOptions.IgnoreCase);
}
/**/
///
<summary>
///
分割字符串
///
</summary>
///
<returns></returns>
public
static
string
[] SplitString(
string
strContent,
string
strSplit,
int
p_3)
{
string
[] result
=
new
string
[p_3];
string
[] splited
=
SplitString(strContent, strSplit);
for
(
int
i
=
0
; i
<
p_3; i
++
)
{
if
(i
<
splited.Length)
result[i]
=
splited[i];
else
result[i]
=
string
.Empty;
}
return
result;
}
/**/
///
<summary>
///
进行指定的替换(脏字过滤)
///
</summary>
public
static
string
StrFilter(
string
str,
string
bantext)
{
string
text1
=
""
;
string
text2
=
""
;
string
[] textArray1
=
SplitString(bantext,
"
\r\n
"
);
for
(
int
num1
=
0
; num1
<
textArray1.Length; num1
++
)
{
text1
=
textArray1[num1].Substring(
0
, textArray1[num1].IndexOf(
"
=
"
));
text2
=
textArray1[num1].Substring(textArray1[num1].IndexOf(
"
=
"
)
+
1
);
str
=
str.Replace(text1, text2);
}
return
str;
}
/**/
///
<summary>
///
过滤输入信息
///
</summary>
///
<param name="text">
内容
</param>
///
<param name="maxLength">
最大长度
</param>
///
<returns></returns>
public
static
string
FilterInputText(
string
text,
int
maxLength)
{
#region
text
=
text.Trim();
if
(
string
.IsNullOrEmpty(text))
return
string
.Empty;
if
(text.Length
>
maxLength)
text
=
text.Substring(
0
, maxLength);
text
=
Regex.Replace(text,
"
[\\s]{2,}
"
,
"
"
);
//
two or more spaces
text
=
Regex.Replace(text,
"
(<[b|B][r|R]/*>)+|(<[p|P](.|\\n)*?>)
"
,
"
\n
"
);
//
<br>
text
=
Regex.Replace(text,
"
(\\s*&[n|N][b|B][s|S][p|P];\\s*)+
"
,
"
"
);
//
text
=
Regex.Replace(text,
"
<(.|\\n)*?>
"
,
string
.Empty);
//
any other tags
text
=
text.Replace(
"
'
"
,
"
''
"
);
return
text;
#endregion
}
/**/
///
<summary>
///
为脚本替换特殊字符串
///
</summary>
///
<param name="str"></param>
///
<returns></returns>
public
static
string
ReplaceStrToScript(
string
str)
{
str
=
str.Replace(
"
\\
"
,
"
\\\\
"
);
str
=
str.Replace(
"
'
"
,
"
\\'
"
);
str
=
str.Replace(
"
\
""
,
"
\\\
""
);
return
str;
}
/**/
///
<summary>
///
删除最后一个字符
///
</summary>
///
<param name="str"></param>
///
<returns></returns>
public
static
string
ClearLastChar(
string
str)
{
if
(str
==
""
)
return
""
;
else
return
str.Substring(
0
, str.Length
-
1
);
}
/**/
///
<summary>
///
将全角数字转换为数字
///
</summary>
///
<param name="SBCCase"></param>
///
<returns></returns>
public
static
string
SBCCaseToNumberic(
string
SBCCase)
{
char
[] c
=
SBCCase.ToCharArray();
for
(
int
i
=
0
; i
<
c.Length; i
++
)
{
byte
[] b
=
System.Text.Encoding.Unicode.GetBytes(c, i,
1
);
if
(b.Length
==
2
)
{
if
(b[
1
]
==
255
)
{
b[
0
]
=
(
byte
)(b[
0
]
+
32
);
b[
1
]
=
0
;
c[i]
=
System.Text.Encoding.Unicode.GetChars(b)[
0
];
}
}
}
return
new
string
(c);
}
/**/
///
<summary>
///
将字符串转换为Color
///
</summary>
///
<param name="color"></param>
///
<returns></returns>
public
static
Color ToColor(
string
color)
{
int
red, green, blue
=
0
;
char
[] rgb;
color
=
color.TrimStart(
'
#
'
);
color
=
Regex.Replace(color.ToLower(),
"
[g-zG-Z]
"
,
""
);
switch
(color.Length)
{
case
3
:
rgb
=
color.ToCharArray();
red
=
Convert.ToInt32(rgb[
0
].ToString()
+
rgb[
0
].ToString(),
16
);
green
=
Convert.ToInt32(rgb[
1
].ToString()
+
rgb[
1
].ToString(),
16
);
blue
=
Convert.ToInt32(rgb[
2
].ToString()
+
rgb[
2
].ToString(),
16
);
return
Color.FromArgb(red, green, blue);
case
6
:
rgb
=
color.ToCharArray();
red
=
Convert.ToInt32(rgb[
0
].ToString()
+
rgb[
1
].ToString(),
16
);
green
=
Convert.ToInt32(rgb[
2
].ToString()
+
rgb[
3
].ToString(),
16
);
blue
=
Convert.ToInt32(rgb[
4
].ToString()
+
rgb[
5
].ToString(),
16
);
return
Color.FromArgb(red, green, blue);
default
:
return
Color.FromName(color);
}
}
/**/
///
<summary>
///
判断给定的字符串数组(strNumber)中的数据是不是都为数值型
///
</summary>
///
<param name="strNumber">
要确认的字符串数组
</param>
///
<returns>
是则返加true 不是则返回 false
</returns>
public
static
bool
IsNumericArray(
string
[] strNumber)
{
return
TypeParse.IsNumericArray(strNumber);
}
截取字符串函数
#region
截取字符串函数
/**/
///
<summary>
///
从字符串的指定位置截取指定长度的子字符串
///
</summary>
///
<param name="str">
原字符串
</param>
///
<param name="startIndex">
子字符串的起始位置
</param>
///
<param name="length">
子字符串的长度
</param>
///
<returns>
子字符串
</returns>
public
static
string
CutString(
string
str,
int
startIndex,
int
length)
{
if
(startIndex
>=
0
)
{
if
(length
<
0
)
{
length
=
length
*
-
1
;
if
(startIndex
-
length
<
0
)
{
length
=
startIndex;
startIndex
=
0
;
}
else
{
startIndex
=
startIndex
-
length;
}
}
if
(startIndex
>
str.Length)
{
return
""
;
}
}
else
{
if
(length
<
0
)
{
return
""
;
}
else
{
if
(length
+
startIndex
>
0
)
{
length
=
length
+
startIndex;
startIndex
=
0
;
}
else
{
return
""
;
}
}
}
if
(str.Length
-
startIndex
<
length)
{
length
=
str.Length
-
startIndex;
}
return
str.Substring(startIndex, length);
}
/**/
///
<summary>
///
从字符串的指定位置开始截取到字符串结尾的了符串
///
</summary>
///
<param name="str">
原字符串
</param>
///
<param name="startIndex">
子字符串的起始位置
</param>
///
<returns>
子字符串
</returns>
public
static
string
CutString(
string
str,
int
startIndex)
{
return
CutString(str, startIndex, str.Length);
}
/**/
///
<summary>
///
字符串如果操过指定长度则将超出的部分用指定字符串代替
///
</summary>
///
<param name="p_SrcString">
要检查的字符串
</param>
///
<param name="p_Length">
指定长度
</param>
///
<param name="p_TailString">
用于替换的字符串
</param>
///
<returns>
截取后的字符串
</returns>
public
static
string
GetSubString(
string
p_SrcString,
int
p_Length,
string
p_TailString)
{
return
GetSubString(p_SrcString,
0
, p_Length, p_TailString);
}
/**/
///
<summary>
///
取指定长度的字符串
///
</summary>
///
<param name="p_SrcString">
要检查的字符串
</param>
///
<param name="p_StartIndex">
起始位置
</param>
///
<param name="p_Length">
指定长度
</param>
///
<param name="p_TailString">
用于替换的字符串
</param>
///
<returns>
截取后的字符串
</returns>
public
static
string
GetSubString(
string
p_SrcString,
int
p_StartIndex,
int
p_Length,
string
p_TailString)
{
取指定长度的字符串
#region
取指定长度的字符串
string
myResult
=
p_SrcString;
//
当是日文或韩文时(注:中文的范围:\u4e00 - \u9fa5, 日文在\u0800 - \u4e00, 韩文为\xAC00-\xD7A3)
if
(System.Text.RegularExpressions.Regex.IsMatch(p_SrcString,
"
[\u0800-\u4e00]+
"
)
||
System.Text.RegularExpressions.Regex.IsMatch(p_SrcString,
"
[\xAC00-\xD7A3]+
"
))
{
//
当截取的起始位置超出字段串长度时
if
(p_StartIndex
>=
p_SrcString.Length)
{
return
""
;
}
else
{
return
p_SrcString.Substring(p_StartIndex,
((p_Length
+
p_StartIndex)
>
p_SrcString.Length)
?
(p_SrcString.Length
-
p_StartIndex) : p_Length);
}
}
if
(p_Length
>=
0
)
{
byte
[] bsSrcString
=
Encoding.Default.GetBytes(p_SrcString);
//
当字符串长度大于起始位置
if
(bsSrcString.Length
>
p_StartIndex)
{
int
p_EndIndex
=
bsSrcString.Length;
//
当要截取的长度在字符串的有效长度范围内
if
(bsSrcString.Length
>
(p_StartIndex
+
p_Length))
{
p_EndIndex
=
p_Length
+
p_StartIndex;
}
else
{
//
当不在有效范围内时,只取到字符串的结尾
p_Length
=
bsSrcString.Length
-
p_StartIndex;
p_TailString
=
""
;
}
int
nRealLength
=
p_Length;
int
[] anResultFlag
=
new
int
[p_Length];
byte
[] bsResult
=
null
;
int
nFlag
=
0
;
for
(
int
i
=
p_StartIndex; i
<
p_EndIndex; i
++
)
{
if
(bsSrcString[i]
>
127
)
{
nFlag
++
;
if
(nFlag
==
3
)
{
nFlag
=
1
;
}
}
else
{
nFlag
=
0
;
}
anResultFlag[i]
=
nFlag;
}
if
((bsSrcString[p_EndIndex
-
1
]
>
127
)
&&
(anResultFlag[p_Length
-
1
]
==
1
))
{
nRealLength
=
p_Length
+
1
;
}
bsResult
=
new
byte
[nRealLength];
Array.Copy(bsSrcString, p_StartIndex, bsResult,
0
, nRealLength);
myResult
=
Encoding.Default.GetString(bsResult);
myResult
=
myResult
+
p_TailString;
}
}
return
myResult;
#endregion
}
/**/
///
<summary>
///
截取字符串函数
///
</summary>
///
<param name="str">
所要截取的字符串
</param>
///
<param name="num">
截取字符串的长度
</param>
///
<returns></returns>
static
public
string
GetSubString(
string
str,
int
num)
{
#region
return
(str.Length
>
num)
?
str.Substring(
0
, num)
+
"
"
: str;
#endregion
}
#endregion
#endregion
文件及文件夹方法
#region
文件及文件夹方法
/**/
///
<summary>
///
创建一个新文件夹
///
</summary>
///
<param name="P_name">
指定的文件夹名称
</param>
///
<returns></returns>
static
public
bool
CreateFolder(
string
P_folderName)
{
string
path
=
HttpContext.Current.Server.MapPath(P_folderName);
try
{
if
(
!
Directory.Exists(path))
{
Directory.CreateDirectory(path);
return
true
;
}
else
{
HttpContext.Current.Response.Write(
"
<script language='javascript'>alert('已存在相同的文件夹名,请取另一个文件夹名!');</script>
"
);
return
false
;
}
}
catch
(Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
return
false
;
}
}
/**/
///
<summary>
///
创建一个新文件夹
///
</summary>
///
<param name="P_name">
指定的文件夹名称
</param>
///
<returns></returns>
static
public
bool
CreateFolder2(
string
P_folderName)
{
string
path
=
HttpContext.Current.Server.MapPath(P_folderName);
try
{
if
(
!
Directory.Exists(path))
{
Directory.CreateDirectory(path);
return
true
;
}
else
{
return
true
;
}
}
catch
(Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
return
false
;
}
}
/**/
///
<summary>
///
删除一个指定的文件夹
///
</summary>
///
<param name="P_folderName"></param>
///
<returns></returns>
static
public
bool
DelFolder(
string
P_folderName)
{
string
V_path
=
HttpContext.Current.Server.MapPath(P_folderName);
try
{
if
(Directory.Exists(V_path))
{
Directory.Delete(V_path,
true
);
return
true
;
}
else
{
HttpContext.Current.Response.Write(
"
<script language='javascript'>alert('文件夹不存在!');</script>
"
);
return
false
;
}
}
catch
(Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
return
false
;
}
}
/**/
///
<summary>
///
显示文件夹中下的所有文件名
///
</summary>
///
<param name="P_folderName"></param>
///
<returns></returns>
static
public
bool
AllFileShow(
string
P_folderName)
{
if
(
!
Directory.Exists(P_folderName))
{
HttpContext.Current.Response.Write(
"
文件夹不存在,请重新输入一个存在的文件夹名!
"
);
return
false
;
}
else
{
DirectoryInfo di
=
new
DirectoryInfo(HttpContext.Current.Server.MapPath(P_folderName));
FileInfo[] file
=
di.GetFiles(
"
*.*
"
);
for
(
int
i
=
0
; i
<
file.Length; i
++
)
{
HttpContext.Current.Response.Write(file[i]
+
"
<br>
"
);
}
return
true
;
}
}
/**/
///
<summary>
///
只显示以gif、jpg、bmp、png格式的文件夹下的所有此类图片
///
</summary>
///
<param name="P_folderName"></param>
///
<returns></returns>
static
public
bool
ImgFileShow(
string
P_folderName)
{
if
(
!
Directory.Exists(P_folderName))
{
HttpContext.Current.Response.Write(
"
文件夹不存在,请重新输入一个存在的文件夹名!
"
);
return
false
;
}
else
{
DirectoryInfo di
=
new
DirectoryInfo(HttpContext.Current.Server.MapPath(P_folderName));
string
[] filters
=
new
string
[]
{
"
*.gif
"
,
"
*.jpg
"
,
"
*.bmp
"
,
"
*.png
"
}
;
foreach
(
string
filter
in
filters)
{
FileInfo[] file
=
di.GetFiles(filter);
for
(
int
i
=
0
; i
<
file.Length; i
++
)
{
HttpContext.Current.Response.Write(file[i]
+
"
<br>
"
);
}
}
return
true
;
}
}
/**/
///
<summary>
///
通过图片文件的前缀名删除图片
///
</summary>
///
<param name="P_folderName">
指定的文件夹
</param>
///
<param name="P_filePrefix">
图片名前缀
</param>
///
<returns></returns>
static
public
bool
DelImgByPrefix(
string
P_folderName,
string
P_filePrefix)
{
if
(
!
Directory.Exists(HttpContext.Current.Server.MapPath(P_folderName)))
{
HttpContext.Current.Response.Write(
"
文件夹不存在,请重新输入一个存在的文件夹名!
"
);
return
false
;
}
else
{
DirectoryInfo di
=
new
DirectoryInfo(HttpContext.Current.Server.MapPath(P_folderName));
string
[] filters
=
new
string
[]
{ P_filePrefix
+
"
*.gif
"
, P_filePrefix
+
"
*.jpg
"
, P_filePrefix
+
"
*.bmp
"
, P_filePrefix
+
"
*.png
"
}
;
foreach
(
string
filter
in
filters)
{
FileInfo[] file
=
di.GetFiles(filter);
for
(
int
i
=
0
; i
<
file.Length; i
++
)
{
//
HttpContext.Current.Response.Write(file[i] + "<br>");
File.Delete(HttpContext.Current.Server.MapPath(P_folderName
+
file[i].ToString()));
}
}
return
true
;
}
}
/**/
///
<summary>
///
删除文件
///
</summary>
///
<param name="P_filePath">
指定的文件路径
</param>
///
<returns></returns>
static
public
bool
DelFile(
string
P_filePath)
{
if
(
!
File.Exists(HttpContext.Current.Server.MapPath(P_filePath)))
{
HttpContext.Current.Response.Write(
"
文件路径不正确!
"
);
return
false
;
}
else
{
File.Delete(HttpContext.Current.Server.MapPath(P_filePath));
return
true
;
}
}
/**/
///
<summary>
///
获得当前绝对路径
///
</summary>
///
<param name="strPath">
指定的路径
</param>
///
<returns>
绝对路径
</returns>
public
static
string
GetMapPath(
string
strPath)
{
if
(HttpContext.Current
!=
null
)
{
return
HttpContext.Current.Server.MapPath(strPath);
}
else
//
非web程序引用
{
return
System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
}
}
/**/
///
<summary>
///
建立文件夹
///
</summary>
///
<param name="name"></param>
///
<returns></returns>
public
static
bool
CreateDir(
string
name)
{
return
Utils.MakeSureDirectoryPathExists(name);
}
/**/
///
<summary>
///
返回文件是否存在
///
</summary>
///
<param name="filename">
文件名
</param>
///
<returns>
是否存在
</returns>
public
static
bool
FileExists(
string
filename)
{
return
System.IO.File.Exists(filename);
}
/**/
///
<summary>
///
以指定的ContentType输出指定文件文件
///
</summary>
///
<param name="filepath">
文件路径
</param>
///
<param name="filename">
输出的文件名
</param>
///
<param name="filetype">
将文件输出时设置的ContentType
</param>
public
static
void
ResponseFile(
string
filepath,
string
filename,
string
filetype)
{
Stream iStream
=
null
;
//
缓冲区为10k
byte
[] buffer
=
new
Byte[
10000
];
//
文件长度
int
length;
//
需要读的数据长度
long
dataToRead;
try
{
//
打开文件
iStream
=
new
FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//
需要读的数据长度
dataToRead
=
iStream.Length;
HttpContext.Current.Response.ContentType
=
filetype;
HttpContext.Current.Response.AddHeader(
"
Content-Disposition
"
,
"
attachment;filename=
"
+
Utils.UrlEncode(filename.Trim()).Replace(
"
+
"
,
"
"
));
while
(dataToRead
>
0
)
{
//
检查客户端是否还处于连接状态
if
(HttpContext.Current.Response.IsClientConnected)
{
length
=
iStream.Read(buffer,
0
,
10000
);
HttpContext.Current.Response.OutputStream.Write(buffer,
0
, length);
HttpContext.Current.Response.Flush();
buffer
=
new
Byte[
10000
];
dataToRead
=
dataToRead
-
length;
}
else
{
//
如果不再连接则跳出死循环
dataToRead
=
-
1
;
}
}
}
catch
(Exception ex)
{
HttpContext.Current.Response.Write(
"
Error :
"
+
ex.Message);
}
finally
{
if
(iStream
!=
null
)
{
//
关闭文件
iStream.Close();
}
}
HttpContext.Current.Response.End();
}
/**/
///
<summary>
///
判断文件名是否为浏览器可以直接显示的图片文件名
///
</summary>
///
<param name="filename">
文件名
</param>
///
<returns>
是否可以直接显示
</returns>
public
static
bool
IsImgFilename(
string
filename)
{
filename
=
filename.Trim();
if
(filename.EndsWith(
"
.
"
)
||
filename.IndexOf(
"
.
"
)
==
-
1
)
{
return
false
;
}
string
extname
=
filename.Substring(filename.LastIndexOf(
"
.
"
)
+
1
).ToLower();
return
(extname
==
"
jpg
"
||
extname
==
"
jpeg
"
||
extname
==
"
png
"
||
extname
==
"
bmp
"
||
extname
==
"
gif
"
);
}
/**/
///
<summary>
///
备份文件
///
</summary>
///
<param name="sourceFileName">
源文件名
</param>
///
<param name="destFileName">
目标文件名
</param>
///
<param name="overwrite">
当目标文件存在时是否覆盖
</param>
///
<returns>
操作是否成功
</returns>
public
static
bool
BackupFile(
string
sourceFileName,
string
destFileName,
bool
overwrite)
{
if
(
!
System.IO.File.Exists(sourceFileName))
{
throw
new
FileNotFoundException(sourceFileName
+
"
文件不存在!
"
);
}
if
(
!
overwrite
&&
System.IO.File.Exists(destFileName))
{
return
false
;
}
try
{
System.IO.File.Copy(sourceFileName, destFileName,
true
);
return
true
;
}
catch
(Exception e)
{
throw
e;
}
}
/**/
///
<summary>
///
备份文件,当目标文件存在时覆盖
///
</summary>
///
<param name="sourceFileName">
源文件名
</param>
///
<param name="destFileName">
目标文件名
</param>
///
<returns>
操作是否成功
</returns>
public
static
bool
BackupFile(
string
sourceFileName,
string
destFileName)
{
return
BackupFile(sourceFileName, destFileName,
true
);
}
/**/
///
<summary>
///
恢复文件
///
</summary>
///
<param name="backupFileName">
备份文件名
</param>
///
<param name="targetFileName">
要恢复的文件名
</param>
///
<param name="backupTargetFileName">
要恢复文件再次备份的名称,如果为null,则不再备份恢复文件
</param>
///
<returns>
操作是否成功
</returns>
public
static
bool
RestoreFile(
string
backupFileName,
string
targetFileName,
string
backupTargetFileName)
{
try
{
if
(
!
System.IO.File.Exists(backupFileName))
{
throw
new
FileNotFoundException(backupFileName
+
"
文件不存在!
"
);
}
if
(backupTargetFileName
!=
null
)
{
if
(
!
System.IO.File.Exists(targetFileName))
{
throw
new
FileNotFoundException(targetFileName
+
"
文件不存在!无法备份此文件!
"
);
}
else
{
System.IO.File.Copy(targetFileName, backupTargetFileName,
true
);
}
}
System.IO.File.Delete(targetFileName);
System.IO.File.Copy(backupFileName, targetFileName);
}
catch
(Exception e)
{
throw
e;
}
return
true
;
}
public
static
bool
RestoreFile(
string
backupFileName,
string
targetFileName)
{
return
RestoreFile(backupFileName, targetFileName,
null
);
}
/**/
///
<summary>
///
返回URL中结尾的文件名
///
</summary>
public
static
string
GetFilename(
string
url)
{
if
(url
==
null
)
{
return
""
;
}
string
[] strs1
=
url.Split(
new
char
[]
{
'
/
'
}
);
return
strs1[strs1.Length
-
1
].Split(
new
char
[]
{
'
?
'
}
)[
0
];
}
#endregion
字符加密处理
#region
字符加密处理
/**/
///
<summary>
///
MD5函数
///
</summary>
///
<param name="str">
原始字符串
</param>
///
<returns>
MD5结果
</returns>
public
static
string
MD5(
string
str)
{
byte
[] b
=
Encoding.Default.GetBytes(str);
b
=
new
MD5CryptoServiceProvider().ComputeHash(b);
string
ret
=
""
;
for
(
int
i
=
0
; i
<
b.Length; i
++
)
ret
+=
b[i].ToString(
"
x
"
).PadLeft(
2
,
'
0
'
);
return
ret;
}
/**/
///
<summary>
///
SHA256函数
///
</summary>
///
///
<param name="str">
原始字符串
</param>
///
<returns>
SHA256结果
</returns>
public
static
string
SHA256(
string
str)
{
byte
[] SHA256Data
=
Encoding.UTF8.GetBytes(str);
SHA256Managed Sha256
=
new
SHA256Managed();
byte
[] Result
=
Sha256.ComputeHash(SHA256Data);
return
Convert.ToBase64String(Result);
//
返回长度为44字节的字符串
}
#endregion
字符判断处理
#region
字符判断处理
/**/
///
<summary>
///
判断对象是否为Int32类型的数字
///
</summary>
///
<param name="Expression"></param>
///
<returns></returns>
public
static
bool
IsNumeric(
object
Expression)
{
return
TypeParse.IsNumeric(Expression);
}
/**/
///
<summary>
///
判断对象是否为Double类型的数字
///
</summary>
///
<param name="Expression"></param>
///
<returns></returns>
public
static
bool
IsDouble(
object
Expression)
{
return
TypeParse.IsDouble(Expression);
}
/**/
///
<summary>
///
判断字符串是否是yy-mm-dd字符串
///
</summary>
///
<param name="str">
待判断字符串
</param>
///
<returns>
判断结果
</returns>
public
static
bool
IsDateString(
string
str)
{
return
Regex.IsMatch(str,
@"
(\d{4})-(\d{1,2})-(\d{1,2})
"
);
}
/**/
///
<summary>
///
检测是否符合email格式
///
</summary>
///
<param name="strEmail">
要判断的email字符串
</param>
///
<returns>
判断结果
</returns>
public
static
bool
IsValidEmail(
string
strEmail)
{
return
Regex.IsMatch(strEmail,
@"
^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$
"
);
}
public
static
bool
IsValidDoEmail(
string
strEmail)
{
return
Regex.IsMatch(strEmail,
@"
^@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$
"
);
}
/**/
///
<summary>
///
检测是否是正确的Url
///
</summary>
///
<param name="strUrl">
要验证的Url
</param>
///
<returns>
判断结果
</returns>
public
static
bool
IsURL(
string
strUrl)
{
return
Regex.IsMatch(strUrl,
@"
^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{1,10}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$
"
);
}
public
static
string
GetEmailHostName(
string
strEmail)
{
if
(strEmail.IndexOf(
"
@
"
)
<
0
)
{
return
""
;
}
return
strEmail.Substring(strEmail.LastIndexOf(
"
@
"
)).ToLower();
}
/**/
///
<summary>
///
判断是否为base64字符串
///
</summary>
///
<param name="str"></param>
///
<returns></returns>
public
static
bool
IsBase64String(
string
str)
{
//
A-Z, a-z, 0-9, +, /, =
return
Regex.IsMatch(str,
@"
[A-Za-z0-9\+\/\=]
"
);
}
/**/
///
<summary>
///
检测是否有Sql危险字符
///
</summary>
///
<param name="str">
要判断字符串
</param>
///
<returns>
判断结果
</returns>
public
static
bool
IsSafeSqlString(
string
str)
{
return
!
Regex.IsMatch(str,
@"
[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']
"
);
}
/**/
///
<summary>
///
检测是否有危险的可能用于链接的字符串
///
</summary>
///
<param name="str">
要判断字符串
</param>
///
<returns>
判断结果
</returns>
public
static
bool
IsSafeUserInfoString(
string
str)
{
return
!
Regex.IsMatch(str,
@"
^\s*$|^c:\\con\\con$|[%,\*
"
+
"
\
""
+ @
"
\s\t\
<
\
>
\
&
]
|
游客
|^
Guest
"
);
}
/**/
///
<summary>
///
验证是否为正整数
///
</summary>
///
<param name="str"></param>
///
<returns></returns>
public
static
bool
IsInt(
string
str)
{
return
Regex.IsMatch(str,
@"
^[0-9]*$
"
);
}
/**/
///
<summary>
///
判断输入是否数字
///
</summary>
///
<param name="num">
要判断的字符串
</param>
///
<returns></returns>
static
public
bool
VldInt(
string
num)
{
#region
try
{
Convert.ToInt32(num);
return
true
;
}
catch
{
return
false
; }
#endregion
}
public
static
bool
IsRuleTip(Hashtable NewHash,
string
ruletype,
out
string
key)
{
key
=
""
;
foreach
(DictionaryEntry str
in
NewHash)
{
try
{
string
[] single
=
SplitString(str.Value.ToString(),
"
\r\n
"
);
foreach
(
string
strs
in
single)
{
if
(strs
!=
""
)
switch
(ruletype.Trim().ToLower())
{
case
"
email
"
:
if
(IsValidDoEmail(strs.ToString())
==
false
)
throw
new
Exception();
break
;
case
"
ip
"
:
if
(IsIPSect(strs.ToString())
==
false
)
throw
new
Exception();
break
;
case
"
timesect
"
:
string
[] splitetime
=
strs.Split(
'
-
'
);
if
(Utils.IsTime(splitetime[
1
].ToString())
==
false
||
Utils.IsTime(splitetime[
0
].ToString())
==
false
)
throw
new
Exception();
break
;
}
}
}
catch
{
key
=
str.Key.ToString();
return
false
;
}
}
return
true
;
}
#endregion
日期时间函数
#region
日期时间函数
/**/
///
<summary>
///
根据阿拉伯数字返回月份的名称(可更改为某种语言)
///
</summary>
public
static
string
[] Monthes
{
get
{
return
new
string
[]
{
"
January
"
,
"
February
"
,
"
March
"
,
"
April
"
,
"
May
"
,
"
June
"
,
"
July
"
,
"
August
"
,
"
September
"
,
"
October
"
,
"
November
"
,
"
December
"
}
;
}
}
/**/
///
<summary>
///
返回标准日期格式string
///
</summary>
public
static
string
GetDate()
{
return
DateTime.Now.ToString(
"
yyyy-MM-dd
"
);
}
/**/
///
<summary>
///
返回指定日期格式
///
</summary>
public
static
string
GetDate(
string
datetimestr,
string
replacestr)
{
if
(datetimestr
==
null
)
{
return
replacestr;
}
if
(datetimestr.Equals(
""
))
{
return
replacestr;
}
try
{
datetimestr
=
Convert.ToDateTime(datetimestr).ToString(
"
yyyy-MM-dd
"
).Replace(
"
1900-01-01
"
, replacestr);
}
catch
{
return
replacestr;
}
return
datetimestr;
}
/**/
///
<summary>
///
返回标准时间格式string
///
</summary>
public
static
string
GetTime()
{
return
DateTime.Now.ToString(
"
HH:mm:ss
"
);
}
/**/
///
<summary>
///
返回标准时间格式string
///
</summary>
public
static
string
GetDateTime()
{
return
DateTime.Now.ToString(
"
yyyy-MM-dd HH:mm:ss
"
);
}
/**/
///
<summary>
///
返回相对于当前时间的相对天数
///
</summary>
public
static
string
GetDateTime(
int
relativeday)
{
return
DateTime.Now.AddDays(relativeday).ToString(
"
yyyy-MM-dd HH:mm:ss
"
);
}
/**/
///
<summary>
///
返回标准时间格式string
///
</summary>
public
static
string
GetDateTimeF()
{
return
DateTime.Now.ToString(
"
yyyy-MM-dd HH:mm:ss:fffffff
"
);
}
/**/
///
<summary>
///
返回标准时间
///
</sumary>
public
static
string
GetStandardDateTime(
string
fDateTime,
string
formatStr)
{
if
(fDateTime
==
"
0000-0-0 0:00:00
"
)
{
return
fDateTime;
}
DateTime s
=
Convert.ToDateTime(fDateTime);
return
s.ToString(formatStr);
}
/**/
///
<summary>
///
返回标准时间 yyyy-MM-dd HH:mm:ss
///
</sumary>
public
static
string
GetStandardDateTime(
string
fDateTime)
{
return
GetStandardDateTime(fDateTime,
"
yyyy-MM-dd HH:mm:ss
"
);
}
/**/
///
<summary>
///
///
</summary>
///
<returns></returns>
public
static
bool
IsTime(
string
timeval)
{
return
Regex.IsMatch(timeval,
@"
^((([0-1]?[0-9])|(2[0-3])):([0-5]?[0-9])(:[0-5]?[0-9])?)$
"
);
}
public
static
string
AdDeTime(
int
times)
{
string
newtime
=
(DateTime.Now).AddMinutes(times).ToString();
return
newtime;
}
#endregion
SQL字符处理
#region
SQL字符处理
/**/
///
<summary>
///
改正sql语句中的转义字符
///
</summary>
public
static
string
mashSQL(
string
str)
{
string
str2;
if
(str
==
null
)
{
str2
=
""
;
}
else
{
str
=
str.Replace(
"
\'
"
,
"
'
"
);
str2
=
str;
}
return
str2;
}
/**/
///
<summary>
///
替换sql语句中的有问题符号
///
</summary>
public
static
string
ChkSQL(
string
str)
{
string
str2;
if
(str
==
null
)
{
str2
=
""
;
}
else
{
str
=
str.Replace(
"
'
"
,
"
''
"
);
str2
=
str;
}
return
str2;
}
#endregion
简繁中文函数
#region
简繁中文函数
/**/
///
<summary>
///
转换为简体中文
///
</summary>
public
static
string
ToSChinese(
string
str)
{
return
Strings.StrConv(str, VbStrConv.SimplifiedChinese,
0
);
}
/**/
///
<summary>
///
转换为繁体中文
///
</summary>
public
static
string
ToTChinese(
string
str)
{
return
Strings.StrConv(str, VbStrConv.TraditionalChinese,
0
);
}
#endregion
字符编码处理
#region
字符编码处理
/**/
///
<summary>
///
返回 HTML 字符串的编码结果
///
</summary>
///
<param name="str">
字符串
</param>
///
<returns>
编码结果
</returns>
public
static
string
HtmlEncode(
string
str)
{
return
HttpUtility.HtmlEncode(str);
}
/**/
///
<summary>
///
返回 HTML 字符串的解码结果
///
</summary>
///
<param name="str">
字符串
</param>
///
<returns>
解码结果
</returns>
public
static
string
HtmlDecode(
string
str)
{
return
HttpUtility.HtmlDecode(str);
}
/**/
///
<summary>
///
返回 URL 字符串的编码结果
///
</summary>
///
<param name="str">
字符串
</param>
///
<returns>
编码结果
</returns>
public
static
string
UrlEncode(
string
str)
{
return
HttpUtility.UrlEncode(str);
}
/**/
///
<summary>
///
返回 URL 字符串的编码结果
///
</summary>
///
<param name="str">
字符串
</param>
///
<returns>
解码结果
</returns>
public
static
string
UrlDecode(
string
str)
{
return
HttpUtility.UrlDecode(str);
}
#endregion
UTF-8编码
#region
UTF-8编码
查看全文
相关阅读:
AT&T不能访问公司网络
尝鲜:windows 7 来了
.net控件编程 资料篇
Annual part 2009
从Visual studio 2005移出Visual Assist
不能在IIS 5.1增加应用程序扩展的BUG
The problem of the user is not associated with a trusted sql server connection 混合登录选项设置的问题
让我们难忘的那些歌曲
分享利用VPC防止病毒软件的进入你的windows电脑
杂读 May 12,2008
原文地址:https://www.cnblogs.com/LinFx/p/2123700.html
最新文章
Ajax中:SYS未定义
sqlserver中,如果正确得到中文的长度
oracle中结果集合并
Oracle递归查询
oracle:无效字符
oracle错误
oracle 自定义类型
跳转问题
Emun绑定到DropDownList
售前工作经验总结(二)
热门文章
系统配置启发——选择信息
Csla框架之业务与验证规则
自定义表单列表基本描述与定义
关于最近一段时间工作流软件的开发体会
自定义表单列表字段的数据源绑定
Csla框架之业务对象状态
Csla框架之命令对象理解
csla属性联想
新的工作、新的启发
谈谈我们项目中的角色
Copyright © 2011-2022 走看看