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

📄 datacheck-.cs

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

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

	}

	/// <summary>
	/// IaData 的摘要说明。
	/// </summary>
	public class IaData
	{		

		public IaData()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}


		public static string GetDateString(string _date,string _format)
		{
            string ret = "";
			try
			{
				ret = Convert.ToDateTime( _date ).ToString( _format );
			}
			catch{}
			return ret;
		}


		#region Replace 用指定的替换字符串替换所有匹配项
		/// <summary>
		/// 用指定的替换字符串替换所有匹配项
		/// </summary>
		/// <param name="input">要替换的string</param>
		/// <param name="replacement">匹配项</param>
		/// <param name="replacewith">将匹配项替换成的string</param>
		/// <returns>替换后得到的string</returns>
		public static string Replace(string input, string replacement, string replacewith)
		{			
			Regex regex = new Regex(replacement);			
			string replacedString = regex.Replace(input, replacewith);

			return replacedString;
		}
		#endregion

	
	/// <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;
		}

		//取得字符串的长度——字节数
		public static int LenByte(string input)
		{
			return System.Text.Encoding.Default.GetByteCount(input);
		}


		public static bool IsValidDate(string input)
		{
			bool ret = false;			
			try
			{
				//DateTime.Parse( input );
				DateTimeFormatInfo d = new DateTimeFormatInfo();
				d.FullDateTimePattern = "yyyy-MM-dd";
				Convert.ToDateTime( input,  d );
				ret = true;
			}
			catch{}

			return ret;
		}


		public static bool IsValidFloat(string input)
		{
			bool ret = false;			
			try
			{	
				float f = Convert.ToSingle( input );
				ret = true;
			}
			catch{}

			return ret;
		}


		public static bool IsValidDouble(string input)
		{
			bool ret = false;			
			try
			{	
				double d = Convert.ToDouble( input );
				ret = true;
			}
			catch{}

			return ret;
		}

		#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 :
					strPattern = "^\\s*$"; //White Space
					break;
				case DataSort.Email :
					strPattern = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; //email
						//"^(\\s*)|(\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+))*$"; //email
					break;
				case DataSort.Url :
					strPattern = "^([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?$"; //Internet URL
					break;
				case DataSort.Integer :
					strPattern = "^\\d*$"; //任意长度的数字,长度可以为0
					break;
				case DataSort.Float :
					ret = CheckedData.IsValidFloat( strInput );
					return ret;
					//break;
				case DataSort.Double :
					ret = CheckedData.IsValidDouble( strInput );
					return ret;
					//break;
				case DataSort.Date :
					//strPattern = "^((19[2-9]\\d{1})|(20[01]\\d{1}))(-|/)((0?[13578])|(10)|(12))(-|/)((0?[0-9])|([12][0-9]?)|(3[01]?))|((19[2-9]\\d{1})|(20[01]\\d{1}))(-|/)(0?[2469]|11)(-|/)((0?[0-9])|([12])([0-9]?)|(3[0]?))$"; //日期YYYY-MM-DD: 1920-1-1 到 2019-12-31; Feb 30 也允许
					strPattern = @"^\d{4}-\d{1,2}-\d{1,2}$";
					ret = CheckedData.IsValidDate( strInput );
					if( !ret )
						return ret;
					break;
					
				case DataSort.Time :
					//strPattern = "^(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])$"; //时间格式
					strPattern = @"^\d{1,2}:\d{1,2}:\d{1,2}$";
					ret = CheckedData.IsValidDate( strInput );
					if( !ret )
						return ret;
					break;
					
				case DataSort.DateTime :
					//strPattern = "^(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])$"; //时间格式
					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

	}

	

}

⌨️ 快捷键说明

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