博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
厚积薄发,丰富的公用类库积累,助你高效进行系统开发(9)----各种常用辅助类...
阅读量:6325 次
发布时间:2019-06-22

本文共 20581 字,大约阅读时间需要 68 分钟。

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

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

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

 

 

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帮助文档持续更新中,统一下载地址是: 

最新公用类库DLL+XML注释文件下载地址是: 

 

 

转载地址:http://odlaa.baihongyu.com/

你可能感兴趣的文章
袁创:使用反射动态调用ActiveX控件
查看>>
BZOJ 3532: [Sdoi2014]Lis (最大流)
查看>>
Dundas 系列
查看>>
Windows的命令行查看,修改,删除,添加环境变量
查看>>
iOS 图文混排
查看>>
Vue2 第四天学习(Vue的生命周期)
查看>>
1长数组使用
查看>>
GC是什么? 为什么要有GC?
查看>>
数字积分
查看>>
redis 3.0.1 在CentOS上的安装
查看>>
silverlight:如何在后端代码中控制Behaviors
查看>>
TCP/IP三次握手和HTTP过程
查看>>
JQuery EasyUi之界面设计——母版页以及Ajax的通用处理(三)
查看>>
童年记忆
查看>>
Selenium Python bindings 文档一
查看>>
directX的16位和24位的色彩模式
查看>>
WINDOWS 8
查看>>
ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[下篇]
查看>>
poj3231
查看>>
spring(10)
查看>>