俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。

本篇的公用类库的介绍主题是程序开发中常用到的各种格式转换或者数据验证的辅助类,内容范围可能比较广泛,包括XML操作、序列化及反序列化操作、命令行解析,枚举对象操作,数据格式验证等等,不过都是不可多得、好用的辅助类。

本篇继续继续整理优化已有的共用类库,并继续发表随笔介绍公用类库的接口方法以及详细使用操作,力求给自己继续优化,积攒更丰富的公用类库资源,加深了解的同时,也给大家展现公用类库好的方面。


厚积薄发,丰富的公用类库积累,助你高效进行系统开发(8)----非对称加密、BASE64加密、MD5等常用加密处理

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(7)-----声音播放、硬件信息、键盘模拟及钩子、鼠标模拟及钩子等设备相关

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(6)----全屏截图、图标获取、图片打印、页面预览截屏、图片复杂操作等

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(5)----热键、多线程、窗体动画冻结等窗体操作

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(4)----CSV、Excel、INI文件、独立存储等文件相关

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(3)----数据库相关操作

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(2)----常用操作

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(1)----开篇总结

1、序列化、反序列化、节点等操作类辅助类 XmlHelper。

实现效果

1)本辅助类主要是用来方便实现XML序列化、反序列化、节点等操作。

2)序列化是指一个对象的实例可以被保存,保存成一个二进制串或者XML等格式字符串。反序列化这是从这些内容中还原为一个对象实例的操作。
3)要实现对象的序列化,首先要保证该对象可以序列化。而且,序列化只是将对象的属性进行有效的保存,对于对象的一些方法则无法实现序列化的。实现一个类可序列化的最简便的方法就是增加Serializable属性标记类。
4)DOM(文档对象模型)把层次中的每一个对象都称之为节点(NODE),以HTML超文本标记语言为例:整个文档的一个根就是<html>,在DOM中可以使用
document.documentElement来访问它,它就是整个节点树的根节点(ROOT)。

实现代码

1)辅助类提供的方法接口如下所示:

///

<summary>


///
构造函数

///

</summary>


///

<param name="XmlFile">
XML文件路径
</param>



public
XmlHelper(
string
XmlFile)

#region
静态方法

///

<summary>


///
二进制序列化

///

</summary>


///

<param name="path">
文件路径
</param>


///

<param name="obj">
对象实例
</param>


///

<returns></returns>



public
static
bool
Serialize(
string
path,
object
obj)

///

<summary>


///
XML序列化

///

</summary>


///

<param name="path">
文件路径
</param>


///

<param name="obj">
对象实例
</param>


///

<returns></returns>



public
static
bool
XmlSerialize(
string
path,
object
obj, Type type)

///

<summary>


///
二进制反序列化

///

</summary>


///

<param name="path">
文件路径
</param>


///

<returns></returns>



public
static
object
Deserialize(
string
path)

///

<summary>


///
XML反序列化

///

</summary>


///

<param name="path">
文件路径
</param>


///

<param name="type">
对象类型
</param>


///

<returns></returns>



public
static
object
XmlDeserialize(
string
path, Type type)

#endregion

#region
公用方法

///

<summary>


///
获取指定节点下面的XML子节点

///

</summary>


///

<param name="XmlPathNode">
XML节点
</param>


///

<returns></returns>



public
XmlNodeList Read(
string
XmlPathNode)

///

<summary>


///
读取节点属性内容

///

</summary>


///

<param name="XmlPathNode">
XML节点
</param>


///

<param name="Attrib">
节点属性
</param>


///

<returns></returns>



public
string
Read(
string
XmlPathNode,
string
Attrib)

///

<summary>


///
获取元素节点对象

///

</summary>


///

<param name="XmlPathNode">
XML节点
</param>


///

<param name="elementName">
元素节点名称
</param>


///

<returns></returns>



public
XmlElement GetElement(
string
XmlPathNode,
string
elementName)

///

<summary>


///
获取元素节点的值

///

</summary>


///

<param name="XmlPathNode">
XML节点
</param>


///

<param name="elementName">
元素节点名称
</param>


///

<returns></returns>



public
string
GetElementData(
string
XmlPathNode,
string
elementName)

///

<summary>


///
获取节点下的DataSet

///

</summary>


///

<param name="XmlPathNode">
XML节点
</param>


///

<returns></returns>



public
DataSet GetData(
string
XmlPathNode)

///

<summary>


///
替换某节点的内容

///

</summary>


///

<param name="XmlPathNode">
XML节点
</param>


///

<param name="Content">
节点内容
</param>



public
void
Replace(
string
XmlPathNode,
string
Content)

///

<summary>


///
删除节点

///

</summary>


///

<param name="Node">
节点
</param>



public
void
Delete(
string
Node)

///

<summary>


///
插入一节点和此节点的一子节点

///

</summary>


///

<param name="MainNode"></param>


///

<param name="ChildNode"></param>


///

<param name="Element"></param>


///

<param name="Content"></param>



public
void
InsertNode(
string
MainNode,
string
ChildNode,
string
Element,
string
Content)

///

<summary>


///
插入一个节点带一个属性

///

</summary>


///

<param name="MainNode">
指定的XML节点
</param>


///

<param name="Element">
元素名称
</param>


///

<param name="Attrib">
属性名称
</param>


///

<param name="AttribContent">
属性值
</param>


///

<param name="Content">
内容
</param>



public
void
InsertElement(
string
MainNode,
string
Element,
string
Attrib,
string
AttribContent,
string
Content)

///

<summary>


///
插入XML元素

///

</summary>


///

<param name="MainNode">
指定的XML节点
</param>


///

<param name="Element">
元素名称
</param>


///

<param name="Content">
内容
</param>



public
void
InsertElement(
string
MainNode,
string
Element,
string
Content)

///

<summary>


///
保存XML文档

///

</summary>

public
void
Save()

2)辅助类XmlHelper的使用例子代码如下所示

SearchInfo searchInfo =
new
SearchInfo();

searchInfo.FieldName =
"
TestFeild
"
;
searchInfo.FieldValue =
"
TestValue
"
;

string
file =
@"
C:\searchInfo.xml
"
;
XmlHelper.XmlSerialize(file, searchInfo,
typeof
(SearchInfo));

SearchInfo info2FromXml = XmlHelper.XmlDeserialize(file,
typeof
(SearchInfo))
as
SearchInfo;
Console.WriteLine(
"
{0} : {0}
"
, info2FromXml.FieldName, info2FromXml.FieldValue);

XML序列化文件如下所示,并能通过该文件反序列化到对象实例中。

3)辅助类XmlHelper操作节点的例子代码如下所示。

//
bookstore.xml文件内容

/*


<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
</bookstore>

*/
file =
@"
c:\bookstore.xml
"
;
XmlHelper helper =
new
XmlHelper(file);
string
value = helper.Read(
"
bookstore/book
"
,
"
genre
"
);
Console.WriteLine(value);
//
fantasy


value = helper.Read(
"
bookstore/book
"
,
"
ISBN
"
);
Console.WriteLine(value);
//
2-3631-4


value = helper.GetElementData(
"
bookstore/book
"
,
"
title
"
);
Console.WriteLine(value);
//
Oberon's Legacy


XmlElement element = helper.GetElement(
"
bookstore/book
"
,
"
title
"
);
element.InnerText =
"
伍华聪
"
;

DataSet ds = helper.GetData(
"
bookstore/book
"
);

ds.WriteXml(
@"
C:\ds.xml
"
);


2、序列化和反序列化操作辅助类 Serializer。

实现效果

1)本辅助类主要是用来方便实现序列化合反序列化操作。

2)序列化是指一个对象的实例可以被保存,保存成一个二进制串或者XML等格式字符串。反序列化这是从这些内容中还原为一个对象实例的操作。
本序列化和反序列化操作,提供二进制、XML格式、Soap格式等多种方式的操作,方便对对象实例进行各种序列化操作或者对各种格式文件的反序列化操作。

实现代码

1)辅助类提供的方法接口如下所示:

#region
各种格式的序列化操作
///

<summary>


///
序列化对象到二进制字节数组

///

</summary>


///

<param name="obj">
待序列化的对象
</param>


///

<returns></returns>



public
static
byte
[] SerializeToBinary(
object
obj)

///

<summary>


///
序列化对象到指定的文件中

///

</summary>


///

<param name="obj">
待序列化的对象
</param>


///

<param name="path">
文件路径
</param>


///

<param name="mode">
文件打开方式
</param>



public
static
void
SerializeToBinary(
object
obj,
string
path, FileMode mode)

///

<summary>


///
序列号对象到文件中,创建一个新文件

///

</summary>


///

<param name="obj">
待序列化的对象
</param>


///

<param name="path">
文件路径
</param>



public
static
void
SerializeToBinary(
object
obj,
string
path)

///

<summary>


///
序列化对象到Soap字符串中

///

</summary>


///

<param name="obj">
待序列化的对象
</param>


///

<returns></returns>



public
static
string
SerializeToSoap(
object
obj)

///

<summary>


///
序列化对象到Soap字符串中,并保存到文件

///

</summary>


///

<param name="obj">
待序列化的对象
</param>


///

<param name="path">
文件路径
</param>


///

<param name="mode">
文件打开方式
</param>



public
static
void
SerializeToSoap(
object
obj,
string
path, FileMode mode)

///

<summary>


///
序列化对象到Soap字符串中,并保存到文件

///

</summary>


///

<param name="obj">
待序列化的对象
</param>


///

<param name="path">
文件路径
</param>



public
static
void
SerializeToSoap(
object
obj,
string
path)

///

<summary>


///
序列化对象到XML字符串中

///

</summary>


///

<param name="obj">
待序列化的对象
</param>


///

<returns></returns>



public
static
string
SerializeToXml(
object
obj)

///

<summary>


///
序列化对象到XML字符串,并保存到文件中

///

</summary>


///

<param name="obj">
待序列化的对象
</param>


///

<param name="path">
文件路径
</param>


///

<param name="mode">
文件打开方式
</param>



public
static
void
SerializeToXmlFile(
object
obj,
string
path, FileMode mode)

///

<summary>


///
序列化对象到XML字符串,并保存到文件中

///

</summary>


///

<param name="obj">
待序列化的对象
</param>


///

<param name="path">
文件路径
</param>



public
static
void
SerializeToXmlFile(
object
obj,
string
path)

#endregion


///

<summary>


///
从指定的文件中反序列化到具体的对象

///

</summary>


///

<param name="type">
对象的类型
</param>


///

<param name="path">
文件路径
</param>


///

<returns></returns>



public
static
object
DeserializeFromXmlFile(Type type,
string
path)

///

<summary>


///
从指定的XML字符串中反序列化到具体的对象

///

</summary>


///

<param name="type">
对象的类型
</param>


///

<param name="s">
XML字符串
</param>


///

<returns></returns>



public
static
object
DeserializeFromXml(Type type,
string
s)

///

<summary>


///
从指定的Soap协议字符串中反序列化到具体的对象

///

</summary>


///

<param name="type">
对象的类型
</param>


///

<param name="s">
Soap协议字符串
</param>


///

<returns></returns>



public
static
object
DeserializeFromSoap(Type type,
string
s)

///

<summary>


///
从指定的二进制字节数组中反序列化到具体的对象

///

</summary>


///

<param name="type">
对象的类型
</param>


///

<param name="bytes">
二进制字节数组
</param>


///

<returns></returns>



public
static
object
DeserializeFromBinary(Type type,
byte
[] bytes)

///

<summary>


///
从指定的文件总,以二进制字节数组中反序列化到具体的对象

///

</summary>


///

<param name="type">
对象的类型
</param>


///

<param name="bytes">
二进制字节数组存储的文件
</param>


///

<returns></returns>



public
static
object
DeserializeFromBinary(Type type,
string
path)

///

<summary>


///
获取对象的字节数组大小

///

</summary>


///

<param name="o">
对象
</param>


///

<returns></returns>



public
static
long
GetByteSize(
object
o)

///

<summary>


///
克隆一个对象

///

</summary>


///

<param name="o">
对象
</param>


///

<returns></returns>



public
static
object
Clone(
object
o)

2)辅助类的使用例子代码如下所示

public
class
TestSerializeUtil

{
public
static
string
Execute()
{
string
result =
string
.Empty;
result +=
"
使用SerializeUtil序列化及反序列化的辅助类:
"
+
"
\r\n
"
;

Person person =
new
Person();
person.Name =
"
wuhuacong
"
;
person.Age =
20
;

byte
[] bytes = SerializeUtil.SerializeToBinary(person);
Person person2 = SerializeUtil.DeserializeFromBinary(
typeof
(Person), bytes)
as
Person;
result += ReflectionUtil.GetProperties(person2) +
"
\r\n
"
;

string
xml = SerializeUtil.SerializeToXml(person);
Person person3 = SerializeUtil.DeserializeFromXml(
typeof
(Person), xml)
as
Person;
result +=
"
person3:\r\n
"
+ ReflectionUtil.GetProperties(person3) +
"
\r\n
"
;

result +=
"
SerializeUtil.GetByteSize(person3):
"
+ SerializeUtil.GetByteSize(person3) +
"
\r\n
"
;

Person person4 = SerializeUtil.Clone(person3)
as
Person;
result +=
"
person4:\r\n
"
+ ReflectionUtil.GetProperties(person4) +
"
\r\n
"
;

result +=
"
Util.AreObjectsEqual(person3, person4):
"
+ Util.AreObjectsEqual(person3, person4)+
"
\r\n
"
;

SerializeUtil.SerializeToXmlFile(person3, Util.CurrentPath +
"
person3.xml
"
, FileMode.Create);
Person person5 = SerializeUtil.DeserializeFromXmlFile(
typeof
(Person), Util.CurrentPath +
"
person3.xml
"
)
as
Person;
result +=
"
person5:\r\n
"
+ ReflectionUtil.GetProperties(person5) +
"
\r\n\r\n
"
;

result += SerializeUtil.ReadFile(Util.CurrentPath +
"
person3.xml
"
) +
"
\r\n\r\n
"
;
result += SerializeUtil.ReadFileFromEmbedded(
"
TestUtilities.EmbedFile.xml
"
) +
"
\r\n\r\n
"
;

return
result;
}
}

3、实现命令行解析的常用操作的辅助类 CommandLine。

实现效果

1)本辅助类主要是用来方便实现命令行解析的常用操作,命令行的解析在很多情况下是非常必要的,如自动并带参数启动的操作等。

2)命令行参数。这包括两个列表,一个是参数对,一个是独立的参数。
3)参数是定义为键/值对。参数键必须以'-', '--'或者'\'开始,在参数和值之间必须有一个空格或者字符'='。多余的空格将被忽略。参数后面必须跟着一个值,如果没有指定值,那么字符串'true'将被指定。如果值有空格,必须使用双引号来包含字符,否则字符不能被正确解析。

实现代码

1)辅助类提供的方法接口如下所示:

///

<summary>


///
解析传递的命令行参数,并返回结果到一个CommandArgs对象。

///
假设命令行格式: CMD [param] [[-|--|\]&lt;arg&gt;[[=]&lt;value&gt;]] [param]

///
例如:cmd first -o outfile.txt --compile second \errors=errors.txt third fourth --test = "the value" fifth

///

</summary>


///

<param name="args">
命令行参数数组
</param>


///

<returns>
包含转换后的命令行对象CommandArgs
</returns>

public
static
CommandArgs Parse(
string
[] args)

///

<summary>


///
包含解析的命令行参数。这包括两个列表,一个是参数对,一个是独立的参数。

///

</summary>



public
class
CommandArgs
{
///

<summary>


///
返回参数/参数值的键值字典

///

</summary>



public
Dictionary<
string
,
string
> ArgPairs

///

<summary>


///
返回独立的参数列表

///

</summary>



public
List<
string
> Params

}

2)辅助类的使用例子代码如下所示

///

<summary>


///
应用程序的主入口点。

///

</summary>



[STAThread]
static
void
Main(
string
[] args)
{
//
参数字符串:first -o outfile.txt --compile second \errors=errors.txt third fourth --test = "the value" fifth


CommandArgs objArgs = CommandLine.Parse(args);

//
键值参数列表,得到输出

//
o:outfile.txt

//
compile:second

//
errors:errors.txt

//
test:the value


foreach
(
string
str
in
objArgs.ArgPairs.Keys)
{
Debug.WriteLine(
string
.Format(
"
{0}:{1}
"
, str, objArgs.ArgPairs[str]));
}


//
非键值参数列表:得到first third fourth fifth 共四个字符串


foreach
(
string
str
in
objArgs.Params)
{
Debug.WriteLine(str);
}

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(
false
);
Application.Run(
new
Form1());

}

3)输出结果如下所示

我们给程序输入命令行参数first -o outfile.txt --compile second \errors=errors.txt third fourth --test = "the value" fifth,得到的输出结果如下所示。
o
:outfile
.txt
compile
:second
errors
:errors
.txt
test
:the
value
first
third
fourth
fifth


4、枚举操作辅助类 EnumHelper。

实现效果

1)本辅助类主要是用来方便实现枚举的各种相关操作。

2)枚举操作,涉及字符串和枚举对象互转、获取枚举成员、获取名称和值集合、获取枚举值、枚举描述等操作。
3)枚举可以说是一种强类型的对象操作,比起使用古怪字符、或者数值等内容,具有强类型,编译时刻就确定等特点,在实际开发中,我们还可以使用中文枚举来方便实现各种操作。

实现代码

1)辅助类提供的方法接口如下所示:

///

<summary>


///
通过字符串获取枚举成员实例

///

</summary>


///

<typeparam name="T">
枚举名,比如Enum1
</typeparam>


///

<param name="member">
枚举成员的常量名或常量值,

///
范例:Enum1枚举有两个成员A=0,B=1,则传入"A"或"0"获取 Enum1.A 枚举类型
</param>



public
static
T GetInstance<T>(
string
member)

///

<summary>


///
获取枚举成员名称和成员值的键值对集合

///

</summary>


///

<typeparam name="T">
枚举名,比如Enum1
</typeparam>



public
static
Dictionary<
string
,
object
> GetMemberKeyValue<T>()

///

<summary>


///
获取枚举所有成员名称

///

</summary>


///

<typeparam name="T">
枚举名,比如Enum1
</typeparam>



public
static
string
[] GetMemberNames<T>()

///

<summary>


///
获取枚举成员的名称

///

</summary>


///

<typeparam name="T">
枚举名,比如Enum1
</typeparam>


///

<param name="member">
枚举成员实例或成员值,

///
范例:Enum1枚举有两个成员A=0,B=1,则传入Enum1.A或0,获取成员名称"A"
</param>



public
static
string
GetMemberName<T>(
object
member)

///

<summary>


///
获取枚举所有成员值

///

</summary>


///

<typeparam name="T">
枚举名,比如Enum1
</typeparam>



public
static
Array GetMemberValues<T>()

///

<summary>


///
获取枚举成员的值

///

</summary>


///

<typeparam name="T">
枚举名,比如Enum1
</typeparam>


///

<param name="memberName">
枚举成员的常量名,

///
范例:Enum1枚举有两个成员A=0,B=1,则传入"A"获取0
</param>



public
static
object
GetMemberValue<T>(
string
memberName)

///

<summary>


///
获取枚举的基础类型

///

</summary>


///

<param name="enumType">
枚举类型
</param>



public
static
Type GetUnderlyingType(Type enumType)

///

<summary>


///
检测枚举是否包含指定成员

///

</summary>


///

<typeparam name="T">
枚举名,比如Enum1
</typeparam>


///

<param name="member">
枚举成员名或成员值
</param>



public
static
bool
IsDefined<T>(
string
member)

///

<summary>


///
返回指定枚举类型的指定值的描述

///

</summary>


///

<param name="t">
枚举类型
</param>


///

<param name="v">
枚举值
</param>


///

<returns></returns>



public
static
string
GetDescription(System.Type t,
object
v)

///

<summary>


///
返回指定枚举类型的指定值的名称

///

</summary>


///

<param name="t">
指定枚举类型
</param>


///

<param name="v">
指定值
</param>


///

<returns></returns>



private
static
string
GetName(System.Type t,
object
v)

///

<summary>


///
获取枚举类型的对应序号及描述名称

///

</summary>


///

<param name="t">
枚举类型
</param>


///

<returns></returns>

public
static
SortedList GetStatus(System.Type t)

2)辅助类的使用例子代码如下所示

private
void
btnTestEnum_Click(
object
sender, EventArgs e)
{
string
desc = EnumHelper.GetDescription(
typeof
(SqlOperator), SqlOperator.Like);
MessageUtil.ShowTips(
string
.Format(
"
SqlOperator.Like:{0}
"
, desc));

SortedList list = EnumHelper.GetStatus(
typeof
(SqlOperator));
StringBuilder sb =
new
StringBuilder();
foreach
(
int
key
in
list.Keys)
{
sb.AppendFormat(
"
key:{0} Value:{1} \r\n
"
, key, list[key]);
}
MessageUtil.ShowTips(sb.ToString());
}

5、身份证相关操作辅助类 IDCardHelper。

实现效果

1)本辅助类主要是用来方便实现身份证的各种相关操作,验证身份证、15到18位身份证号码转换、提取省份、县市、地区区划、出生年月及判断男女等操作。

实现代码

1)辅助类提供的方法接口如下所示:

///

<summary>


///
绑定身份证类别的名称

///

</summary>


///

<param name="cb">
ComboBox控件
</param>



public
static
void
InitIdType(ComboBox cb)

///

<summary>


///
获取身份证类别的名称(居民身份证、军官证、士兵证、军官离退休证、境外人员身份证明、外交人员身份证明)

///

</summary>


///

<returns></returns>



public
static
DataTable CreateIDType()

///

<summary>


///
验证身份证结果

///

</summary>


///

<param name="idcard">
身份证号码
</param>


///

<returns>
正确的时候返回string.Empty
</returns>



public
static
string
Validate(
string
idcard)

///

<summary>


///
15位身份证明号码转化成18位用来编码

///

</summary>


///

<param name="idcard">
15位的身份证号码
</param>


///

<returns></returns>



public
static
string
IdCard15To18(
string
idcard)

///

<summary>


///
获取身份证对应省份的区划

///

</summary>


///

<param name="id">
身份证
</param>


///

<returns>
头两位+4个0
</returns>



public
static
string
GetProvince(
string
id)

///

<summary>


///
获取身份证对应县市的区划

///

</summary>


///

<param name="id">
身份证
</param>


///

<returns>
头4位+2个0
</returns>



public
static
string
GetCity(
string
id)

///

<summary>


///
获取身份证对应地区的区划

///

</summary>


///

<param name="id">
身份证
</param>


///

<returns>
头6位
</returns>



public
static
string
GetArea(
string
id)

///

<summary>


///
根据身份证判断是否男女

///

</summary>


///

<param name="id">
身份证号码
</param>


///

<returns>
返回"男"或者"女"
</returns>



public
static
string
GetSexName(
string
id)

///

<summary>


///
根据身份证获取出生年月

///

</summary>


///

<param name="id">
身份证号码
</param>


///

<returns>
出生年月
</returns>

public
static
DateTime GetBirthday(
string
id)

2)辅助类的使用例子代码如下所示

  • 例子涉及敏感信息,自己测试下即可,呵呵
  • 6、各种输入格式验证辅助类 ValidateUtil。

    实现效果

    1)本辅助类主要是用来方便实现各种输入格式验证操作。

    2)格式验证包括各种数字格式、中文检测、身份证、邮件、邮政编码、固定电话、手机、URL地址、IP地址、日期格式、GUID、Base64编码等格式验证。
    3)本辅助类采用各种经过验证的正则表达式进行匹配,具有高效、准确的特点,请放心使用。

    实现代码

    1)辅助类提供的方法接口如下所示:

    #region
    用户名密码格式

    ///

    <summary>


    ///
    返回字符串真实长度, 1个汉字长度为2

    ///

    </summary>


    ///

    <returns>
    字符长度
    </returns>



    public
    static
    int
    GetStringLength(
    string
    stringValue)

    ///

    <summary>


    ///
    检测用户名格式是否有效

    ///

    </summary>


    ///

    <param name="userName">
    用户名
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsValidUserName(
    string
    userName)

    ///

    <summary>


    ///
    密码有效性

    ///

    </summary>


    ///

    <param name="password">
    密码字符串
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsValidPassword(
    string
    password)

    #endregion

    #region
    数字字符串检查

    ///

    <summary>


    ///
    int有效性

    ///

    </summary>



    static
    public
    bool
    IsValidInt(
    string
    val)

    ///

    <summary>


    ///
    是否数字字符串

    ///

    </summary>


    ///

    <param name="inputData">
    输入字符串
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsNumeric(
    string
    inputData)

    ///

    <summary>


    ///
    是否数字字符串

    ///

    </summary>


    ///

    <param name="inputData">
    输入字符串
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsNumber(
    string
    inputData)

    ///

    <summary>


    ///
    是否数字字符串 可带正负号

    ///

    </summary>


    ///

    <param name="inputData">
    输入字符串
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsNumberSign(
    string
    inputData)

    ///

    <summary>


    ///
    是否是浮点数

    ///

    </summary>


    ///

    <param name="inputData">
    输入字符串
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsDecimal(
    string
    inputData)

    ///

    <summary>


    ///
    是否是浮点数 可带正负号

    ///

    </summary>


    ///

    <param name="inputData">
    输入字符串
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsDecimalSign(
    string
    inputData)

    #endregion

    #region
    中文检测

    ///

    <summary>


    ///
    检测是否有中文字符

    ///

    </summary>



    public
    static
    bool
    IsHasCHZN(
    string
    inputData)

    ///

    <summary>


    ///
    检测含有中文字符串的实际长度

    ///

    </summary>


    ///

    <param name="str">
    字符串
    </param>



    public
    static
    int
    GetCHZNLength(
    string
    inputData)

    #endregion

    #region
    常用格式

    ///

    <summary>


    ///
    验证身份证是否合法  15 和  18位两种

    ///

    </summary>


    ///

    <param name="idCard">
    要验证的身份证
    </param>



    public
    static
    bool
    IsIdCard(
    string
    idCard)

    ///

    <summary>


    ///
    是否是邮件地址

    ///

    </summary>


    ///

    <param name="inputData">
    输入字符串
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsEmail(
    string
    inputData)

    ///

    <summary>


    ///
    邮编有效性

    ///

    </summary>



    public
    static
    bool
    IsValidZip(
    string
    zip)

    ///

    <summary>


    ///
    固定电话有效性

    ///

    </summary>



    public
    static
    bool
    IsValidPhone(
    string
    phone)

    ///

    <summary>


    ///
    手机有效性

    ///

    </summary>



    public
    static
    bool
    IsValidMobile(
    string
    mobile)

    ///

    <summary>


    ///
    电话有效性(固话和手机 )

    ///

    </summary>



    public
    static
    bool
    IsValidPhoneAndMobile(
    string
    number)

    ///

    <summary>


    ///
    Url有效性

    ///

    </summary>



    static
    public
    bool
    IsValidURL(
    string
    url)

    ///

    <summary>


    ///
    IP有效性

    ///

    </summary>



    public
    static
    bool
    IsValidIP(
    string
    ip)

    ///

    <summary>


    ///
    domain 有效性

    ///

    </summary>


    ///

    <param name="host">
    域名
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsValidDomain(
    string
    host)

    ///

    <summary>


    ///
    判断是否为base64字符串

    ///

    </summary>



    public
    static
    bool
    IsBase64String(
    string
    str)

    ///

    <summary>


    ///
    验证字符串是否是GUID

    ///

    </summary>


    ///

    <param name="guid">
    字符串
    </param>


    ///

    <returns></returns>



    public
    static
    bool
    IsGuid(
    string
    guid)

    #endregion

    #region
    日期检查

    ///

    <summary>


    ///
    判断输入的字符是否为日期

    ///

    </summary>



    public
    static
    bool
    IsDate(
    string
    strValue)

    ///

    <summary>


    ///
    判断输入的字符是否为日期,如2004-07-12 14:25|||1900-01-01 00:00|||9999-12-31 23:59

    ///

    </summary>



    public
    static
    bool
    IsDateHourMinute(
    string
    strValue)

    #endregion

    #region
    其他

    ///

    <summary>


    ///
    检查字符串最大长度,返回指定长度的串

    ///

    </summary>


    ///

    <param name="sqlInput">
    输入字符串
    </param>


    ///

    <param name="maxLength">
    最大长度
    </param>


    ///

    <returns></returns>



    public
    static
    string
    CheckMathLength(
    string
    inputData,
    int
    maxLength)

    ///

    <summary>


    ///
    转换成 HTML code

    ///

    </summary>



    public
    static
    string
    Encode(
    string
    str)

    ///

    <summary>


    ///
    解析html成 普通文本

    ///

    </summary>

    public
    static
    string
    Decode(
    string
    str)

    2)辅助类的使用例子代码如下所示

    string
    [] qunList = lineString.Split(
    new
    char
    [] {
    '
    ,
    '
    ,
    '
    ;
    '
    ,
    '

    '
    });
    foreach
    (
    string
    qunNumber
    in
    qunList)
    {
    if
    (!
    string
    .IsNullOrEmpty(qunNumber) && ValidateUtil.IsNumber(qunNumber))
    {
    #region
    对每个号码进行查询
    if
    (!QunDict.ContainsKey(qunNumber))
    {
    this
    .lstItems.Invoke(
    new
    MethodInvoker(
    delegate
    ()
    {
    this
    .lstItems.Items.Add(qunNumber);
    this
    .lstItems.Refresh();
    }));

    QunDict.Add(qunNumber, qunNumber);
    }
    else
    {
    skipCount++;
    }
    #endregion
    }

    }

    3)辅助类使用例子代码2如下所示

    string
    src = CRegex.GetImgSrc(img);
    bool
    isurl = ValidateUtil.IsValidURL(src);
    if
    (isurl)
    {
    continue
    ;

    }

    CHM帮助文档持续更新中,统一下载地址是:
    http://www.iqidi.com/download/commonshelp.rar

    最新公用类库DLL+XML注释文件下载地址是:
    https://files.cnblogs.com/wuhuacong/WHC.OrderWater.Commons.rar


    标签: none

    添加新评论