⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datacheck.cs

📁 人力资源管理系统 读者须安装好IIS和Microsoft Visual Stutio.NET相关开发环境
💻 CS
字号:
using System;
using System.Globalization;
using System.Text.RegularExpressions;

namespace HRAdmin.COMMON
{
	/// <summary>
	/// 用于进行后台的数据检测
	/// </summary>
	public class DataCheck
	{
		public DataCheck()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}

		//可检测的数据类型
		public enum DataSort
		{
			WhiteSpace=1,			//空白符
			Email,					//email
			Url,					//Internet URL
			Integer,				//无符号整数
			Float,					//浮点数
			Double,					//双精度
			Date,					//日期
			Time,					//时间
			DateTime,				//日期时间
			NotAllowSingleQuote		//不允许包含单引号'

		}


		#region 待检验的数据
		/// <summary>
		/// 待校验的数据
		/// </summary>
		public class CheckedData
		{

			public string data;		//待校验的数据
			public string description;		//描述
			public bool allowWhiteSpace;	//允许空
			public int maxLength;			//最大长度
			public DataSort sort;		//数据的类别

			public CheckedData()
			{
				this.data = "";
				this.description = "";
				this.allowWhiteSpace = true;
				this.maxLength = 0;
				this.sort = 0;
			}

			/// <summary>
			/// 用指定的数据以及约束条件初始化CheckedData的实例,没有定义要求的数据格式
			/// </summary>
			/// <param name="data">待检测的数据</param>
			/// <param name="Description">待检测的数据的描述,在返回的子串中使用</param>
			/// <param name="AllowWhiteSpace">是否允许为空字符串</param>
			/// <param name="MaxLength">允许的最大长度</param>
			public CheckedData(string data, string Description, bool AllowWhiteSpace, int MaxLength)
			{
				this.data = data;
				this.description = Description;
				this.allowWhiteSpace = AllowWhiteSpace;
				this.maxLength = MaxLength;
				this.sort = 0;
			}

			/// <summary>
			/// 用指定的数据以及约束条件初始化CheckedData的实例
			/// </summary>
			/// <param name="data">待检测的数据</param>
			/// <param name="Description">待检测的数据的描述,在返回的子串中使用</param>
			/// <param name="AllowWhiteSpace">是否允许为空字符串</param>
			/// <param name="MaxLength">允许的最大长度</param>
			/// <param name="Sort">要求的数据格式,DataSort的枚举值,0表示任意格式</param>
			public CheckedData(string data, string Description, bool AllowWhiteSpace, int MaxLength, DataSort Sort)
			{
				this.data = data;
				this.description = Description;
				this.allowWhiteSpace = AllowWhiteSpace;
				this.maxLength = MaxLength;
				this.sort = Sort;
			}
			#endregion

		#region 数据检测函数,检测输入字符串strInput 是否符合DataSort所指定的类别
			/// <summary>
			/// 数据检测函数,检测输入字符串strInput 是否符合DataSort所指定的类别
			/// </summary>
			/// <param name="strInput">输入的数据</param>
			/// <param name="checktype">检验的类型</param>
			/// <returns></returns>
			public static bool DataCheck(string strInput , DataSort checktype)
			{
				bool ret = false;
				string strPattern="";
				switch(checktype)
				{
					case DataSort.WhiteSpace :
						//White Space
						strPattern = "^\\s*$"; 
						break;
					case DataSort.Email :
						//email	
						strPattern = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; 					
						break;
					case DataSort.Url :
						//Internet URL
						strPattern = "^([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?$"; 
						break;
					case DataSort.Integer :
						//任意长度的数字,长度可以为0
						strPattern = "^\\d*$"; 
						break;
					case DataSort.Float :
						//浮点数
						ret = CheckedData.IsValidFloat( strInput );
						return ret;						
					case DataSort.Double :
						//双精度
						ret = CheckedData.IsValidDouble( strInput );
						return ret;						
					case DataSort.Date :
						//检查日期
						strPattern = @"^\d{4}-\d{1,2}-\d{1,2}$";
						ret = CheckedData.IsValidDate( strInput );
						if( !ret )
							return ret;
						break;					
					case DataSort.Time :
						//时间格式
						strPattern = @"^\d{1,2}:\d{1,2}:\d{1,2}$";
						ret = CheckedData.IsValidDate( strInput );
						if( !ret )
							return ret;
						break;
					
					case DataSort.DateTime :
						//日期加时间格式
						strPattern = @"^\d{4}-\d{1,2}-\d{1,2}\s+\d{1,2}:\d{1,2}:\d{1,2}$";
						ret = CheckedData.IsValidDate( strInput );
						if( !ret )
							return ret;
						break;					
					case DataSort.NotAllowSingleQuote :
						//不允许单引号
						strPattern = "'";
						break;
				}
   
				Regex regex = new Regex(strPattern);
				Match match = regex.Match(strInput);
				if(match.Success)
				{
					//匹配
					ret = true;
				}
				else
				{
					ret = false;
				}		
			
				if( checktype == DataSort.NotAllowSingleQuote )
				{
					//匹配表示包含单引号,所以返回false
					ret = !ret;
				}

				return ret;
			}
			#endregion


		#region Check 检测数据是否合法
			/// <summary>
			/// 检测数据是否合法
			/// </summary>
			/// <param name="cd">待校验的数据Array</param>
			/// <returns>合法返回“”,否则返回不合法提示说明,可以直接输出</returns>
			public static string Check(CheckedData[] cd)
			{
				string ret = "";

				string txt = "";
				string description = "";

				for(int i=0; i<cd.Length; i++)
				{				
					txt = cd[i].data;
					description = cd[i].description;
				
					if(!cd[i].allowWhiteSpace)
					{
						//不允许空
						if( CheckedData.DataCheck(txt, DataSort.WhiteSpace) )
						{
							ret = description + "不允许为空,请输入!";
							continue;
						}
					}
					else
					{
						//允许为空
						if( txt == "" )
						{
							//而且输入的值为空,则无需校验长度和格式
							continue;
						}
					}


					if( cd[i].maxLength>0 && CheckedData.LenByte(txt)>cd[i].maxLength )
					{
						//超过最大长度
						ret = description + "超过了最大长度,请核实后重新输入!";
						break;
					}

					if( cd[i].sort != 0 && !CheckedData.DataCheck(txt, cd[i].sort) )
					{
						//不符合格式
						ret = description + "不符合要求的格式,请核实后重新输入!";
						break;
					}
				}

				return ret;

			}
			#endregion

		#region 验证方法
			/// <summary>
			/// 取得字符串的长度——字节数
			/// </summary>
			/// <param name="input">字符串</param>
			/// <returns>字节数</returns>
			public static int LenByte(string input)
			{
				return System.Text.Encoding.Default.GetByteCount(input);
			}

			/// <summary>
			/// 检验日期格式
			/// </summary>
			/// <param name="input">代验证的字符串</param>
			/// <returns>验证结果</returns>
			public static bool IsValidDate(string input)
			{
				bool ret = false;			
				try
				{
					DateTimeFormatInfo d = new DateTimeFormatInfo();
					d.FullDateTimePattern = "yyyy-MM-dd";
					Convert.ToDateTime( input,  d );
					ret = true;
				}
				catch{}

				return ret;
			}

			/// <summary>
			/// 检验浮点数
			/// </summary>
			/// <param name="input">代验证的字符串</param>
			/// <returns>验证结果</returns>
			public static bool IsValidFloat(string input)
			{
				bool ret = false;			
				try
				{	
					float f = Convert.ToSingle( input );
					ret = true;
				}
				catch{}

				return ret;
			}


			/// <summary>
			/// 验证双精度浮点数
			/// </summary>
			/// <param name="input">代验证的字符串</param>
			/// <returns>验证结果</returns>
			public static bool IsValidDouble(string input)
			{
				bool ret = false;			
				try
				{	
					double d = Convert.ToDouble( input );
					ret = true;
				}
				catch{}

				return ret;
			}

			#endregion

		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -