![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class Utils
{
#region 验证
/// <summary>
/// 验证日期,格式:yyyy-MM-dd
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static bool IsValidDate(object date)
{
if (date == null)
{
return false;
}
Regex regex = new Regex(@"^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))$");
return regex.IsMatch(date.ToString());
}
/// <summary>
/// 验证email地址
/// </summary>
/// <param name="email"></param>
/// <returns></returns>
public static bool IsValidEmailAddress(object email)
{
if (email == null)
{
return false;
}
Regex regex = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
return regex.IsMatch(email.ToString());
}
/// <summary>
/// 验证URL
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static bool IsValidURL(object url)
{
if (url == null)
{
return false;
}
Regex regex = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");
return regex.IsMatch(url.ToString());
}
/// <summary>
/// 验证全部为字母
/// </summary>
/// <param name="character"></param>
/// <returns></returns>
public static bool OnlyCharacters(object character)
{
if (character == null)
{
return false;
}
Regex regex = new Regex(@"^.[A-Za-z]+$");
return regex.IsMatch(character.ToString());
}
/// <summary>
/// 验证全部为数字
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public static bool OnlyNumber(object number)
{
if (number == null)
{
return false;
}
Regex regex = new Regex(@"^.[0-9]*$");
return regex.IsMatch(number.ToString());
}
/// <summary>
/// 验证为日期+时间, 以“-”分隔
/// 格式:yyyy-MM-dd hh:mm:ss
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static bool IsValidDateTime(object dateTime)
{
if (dateTime == null)
{
return false;
}
Regex regex = new Regex(@"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$");
return regex.IsMatch(dateTime.ToString());
}
/// <summary>
/// 验证是否为美国电话号码
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
public static bool IsValidUSPhone(object phone)
{
if (phone == null)
{
return false;
}
Regex regex = new Regex(@"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}");
return regex.IsMatch(phone.ToString());
}
/// <summary>
/// 验证美国邮政编码
/// </summary>
/// <param name="zipcode"></param>
/// <returns></returns>
public static bool IsValidUSZipCode(object zipcode)
{
if (zipcode == null)
{
return false;
}
Regex regex = new Regex(@"\d{5}(-\d{4})?");
return regex.IsMatch(zipcode.ToString());
}
/// <summary>
/// 验证是否为韩文
/// </summary>
/// <param name="korean"></param>
/// <returns></returns>
public static bool IsValidKorean(object korean)
{
if (korean == null)
{
return false;
}
Regex regex = new Regex(@"^.[\uac00-\ud7af\u1100-\u11FF\u3130-\u318f]+$");
return regex.IsMatch(korean.ToString());
}
/// <summary>
/// 验证是否为中国手机号码
/// </summary>
/// <param name="mobile"></param>
/// <returns></returns>
public static bool IsValidCNMobile(object mobile)
{
if (mobile == null)
{
return false;
}
Regex regex = new Regex(@"^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}|15[0-9]\d{8}|18[0-9]\d{8}");
return regex.IsMatch(mobile.ToString());
}
/// <summary>
/// 验证是否为中国电话号码
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
public static bool IsValidCNPhone(object phone)
{
if (phone == null)
{
return false;
}
Regex regex = new Regex(@"(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}");
return regex.IsMatch(phone.ToString());
}
/// <summary>
/// 验证中国邮政编码
/// </summary>
/// <param name="zipcode"></param>
/// <returns></returns>
public static bool IsValidCNZipCode(object zipcode)
{
if (zipcode == null)
{
return false;
}
Regex regex = new Regex(@"\d{6}");
return regex.IsMatch(zipcode.ToString());
}
/// <summary>
/// 验证身份证是否为15位或18位
/// </summary>
/// <param name="ID"></param>
/// <returns></returns>
public static bool IsValidCNID(object ID)
{
if (ID == null)
{
return false;
}
Regex regex = new Regex(@"d{18}|d{15}");
return regex.IsMatch(ID.ToString());
}
#endregion
#region 转换
/// <summary>
/// 转换为日期字符串
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static String Object2DateTimeString(object date)
{
return Object2DateTimeString(date, null);
}
/// <summary>
/// 转换为指定格式日期字符串
/// </summary>
/// <param name="date"></param>
/// <param name="dateFormat"></param>
/// <returns></returns>
public static String Object2DateTimeString(object date, String dateFormat)
{
// 如果date为空,返回空字符串
if (date == null || String.IsNullOrEmpty(date.ToString()))
{
return String.Empty;
}
try
{
// 如果没有设置日期格式,返回默认格式
if (!String.IsNullOrEmpty(dateFormat))
{
return Convert.ToDateTime(date).ToString();
}
else
{
return Convert.ToDateTime(date).ToString(dateFormat);
}
}
catch
{
return String.Empty;
}
}
/// <summary>
/// 转换对日期格式
/// </summary>
/// <param name="date"></param>
/// <param name="replaceDate">转换失败时用于返回的值</param>
/// <returns></returns>
public static DateTime Object2DateTime(object date, DateTime replaceDate)
{
string dateString = Object2DateTimeString(date);
if (dateString.Length > 0)
{
return Convert.ToDateTime(dateString);
}
return replaceDate;
}
/// <summary>
/// 转换开始日期
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime Object2StartDate(object date)
{
return Object2DateTime(date, DateTime.MinValue);
}
/// <summary>
/// 转换结束日期
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime Object2EndDate(object date)
{
return Object2DateTime(date, DateTime.MaxValue);
}
/// <summary>
/// 转换为Int32
/// </summary>
/// <param name="iVal"></param>
/// <param name="replaceVal"></param>
/// <returns></returns>
public static Int32 Object2Int32(object iVal, int replaceVal)
{
if (iVal == null)
{
return replaceVal;
}
try
{
return Convert.ToInt32(iVal);
}
catch
{
return replaceVal;
}
}
/// <summary>
/// 转换成单精度浮点型
/// </summary>
/// <param name="fVal"></param>
/// <param name="replaceVal"></param>
/// <returns></returns>
public static Single Object2Single(object fVal, Single replaceVal)
{
if (fVal == null)
{
return replaceVal;
}
try
{
return Convert.ToSingle(fVal);
}
catch
{
return replaceVal;
}
}
/// <summary>
/// 转换成Decimal
/// </summary>
/// <param name="dVal"></param>
/// <param name="replaceVal"></param>
/// <returns></returns>
public static Decimal Object2Decimal(object dVal, Decimal replaceVal)
{
if (dVal == null)
{
return replaceVal;
}
try
{
return Convert.ToDecimal(dVal);
}
catch
{
return replaceVal;
}
}
/// <summary>
/// 转换成单精度浮点型
/// </summary>
/// <param name="dVal"></param>
/// <param name="replaceVal"></param>
/// <returns></returns>
public static Double Object2Double(object dVal, Double replaceVal)
{
if (dVal == null)
{
return replaceVal;
}
try
{
return Convert.ToDouble(dVal);
}
catch
{
return replaceVal;
}
}
/// <summary>
/// 转换为Boolean类型。
/// 1. 如果值为1:true, 0:false
/// 2. 使用Convert.ToBoolean转换
/// </summary>
/// <param name="bVal"></param>
/// <returns></returns>
public static Boolean Object2Boolean(object bVal)
{
if (bVal == null)
{
return false;
}
if (string.Equals(bVal.ToString(), "1"))
{
return true;
}
if (string.Equals(bVal.ToString(), "0"))
{
return false;
}
try
{
return Convert.ToBoolean(bVal);
}
catch
{
return false;
}
}
/// <summary>
/// 将带小数数值形转换成字符串,非小数返回null(默认不保留无效位)
/// </summary>
/// <param name="val">数值类型</param>
/// <param name="saveLocation">保留小数位</param>
/// <returns></returns>
public static String Number2String(ValueType val, int saveLocation)
{
return Number2String(val, saveLocation, false);
}
/// <summary>
/// 将带小数数值形转换成字符串,非小数返回null
/// </summary>
/// <param name="val">小数</param>
/// <param name="saveLocation">保留小数位</param>
/// <param name="saveInvalidNum">是否保留无效位(如:0.50,true:0.50, false:0.5</param>
/// <returns></returns>
public static String Number2String(ValueType val, int saveLocation, bool saveInvalidNum)
{
char ch = saveInvalidNum ? '0' : '#';
String format = "0.".PadRight(saveLocation + 2, ch);
string result = null;
if (val is Single)
{
result = ((Single)val).ToString(format);
}
if (val is Double)
{
result = ((Double)val).ToString(format);
}
if (val is Decimal)
{
result = ((Decimal)val).ToString(format);
}
return result;
}
#endregion
#region 数据工具
/// <summary>
/// DataSet第一个表是否有数据
/// </summary>
/// <param name="ds">DataSet</param>
/// <returns>true/false</returns>
public static bool DsHasData(DataSet ds)
{
if (ds != null && ds.Tables.Count > 0
&& ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
{
return true;
}
return false;
}
/// <summary>
/// 检查DataTable是否有数据
/// </summary>
/// <param name="dt">DataTable</param>
/// <returns>true/false</returns>
public static bool DtHasData(DataTable dt)
{
if (dt != null && dt.Rows.Count > 0)
{
return true;
}
return false;
}
#endregion
}
{
#region 验证
/// <summary>
/// 验证日期,格式:yyyy-MM-dd
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static bool IsValidDate(object date)
{
if (date == null)
{
return false;
}
Regex regex = new Regex(@"^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))$");
return regex.IsMatch(date.ToString());
}
/// <summary>
/// 验证email地址
/// </summary>
/// <param name="email"></param>
/// <returns></returns>
public static bool IsValidEmailAddress(object email)
{
if (email == null)
{
return false;
}
Regex regex = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
return regex.IsMatch(email.ToString());
}
/// <summary>
/// 验证URL
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static bool IsValidURL(object url)
{
if (url == null)
{
return false;
}
Regex regex = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");
return regex.IsMatch(url.ToString());
}
/// <summary>
/// 验证全部为字母
/// </summary>
/// <param name="character"></param>
/// <returns></returns>
public static bool OnlyCharacters(object character)
{
if (character == null)
{
return false;
}
Regex regex = new Regex(@"^.[A-Za-z]+$");
return regex.IsMatch(character.ToString());
}
/// <summary>
/// 验证全部为数字
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public static bool OnlyNumber(object number)
{
if (number == null)
{
return false;
}
Regex regex = new Regex(@"^.[0-9]*$");
return regex.IsMatch(number.ToString());
}
/// <summary>
/// 验证为日期+时间, 以“-”分隔
/// 格式:yyyy-MM-dd hh:mm:ss
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static bool IsValidDateTime(object dateTime)
{
if (dateTime == null)
{
return false;
}
Regex regex = new Regex(@"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$");
return regex.IsMatch(dateTime.ToString());
}
/// <summary>
/// 验证是否为美国电话号码
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
public static bool IsValidUSPhone(object phone)
{
if (phone == null)
{
return false;
}
Regex regex = new Regex(@"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}");
return regex.IsMatch(phone.ToString());
}
/// <summary>
/// 验证美国邮政编码
/// </summary>
/// <param name="zipcode"></param>
/// <returns></returns>
public static bool IsValidUSZipCode(object zipcode)
{
if (zipcode == null)
{
return false;
}
Regex regex = new Regex(@"\d{5}(-\d{4})?");
return regex.IsMatch(zipcode.ToString());
}
/// <summary>
/// 验证是否为韩文
/// </summary>
/// <param name="korean"></param>
/// <returns></returns>
public static bool IsValidKorean(object korean)
{
if (korean == null)
{
return false;
}
Regex regex = new Regex(@"^.[\uac00-\ud7af\u1100-\u11FF\u3130-\u318f]+$");
return regex.IsMatch(korean.ToString());
}
/// <summary>
/// 验证是否为中国手机号码
/// </summary>
/// <param name="mobile"></param>
/// <returns></returns>
public static bool IsValidCNMobile(object mobile)
{
if (mobile == null)
{
return false;
}
Regex regex = new Regex(@"^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}|15[0-9]\d{8}|18[0-9]\d{8}");
return regex.IsMatch(mobile.ToString());
}
/// <summary>
/// 验证是否为中国电话号码
/// </summary>
/// <param name="phone"></param>
/// <returns></returns>
public static bool IsValidCNPhone(object phone)
{
if (phone == null)
{
return false;
}
Regex regex = new Regex(@"(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}");
return regex.IsMatch(phone.ToString());
}
/// <summary>
/// 验证中国邮政编码
/// </summary>
/// <param name="zipcode"></param>
/// <returns></returns>
public static bool IsValidCNZipCode(object zipcode)
{
if (zipcode == null)
{
return false;
}
Regex regex = new Regex(@"\d{6}");
return regex.IsMatch(zipcode.ToString());
}
/// <summary>
/// 验证身份证是否为15位或18位
/// </summary>
/// <param name="ID"></param>
/// <returns></returns>
public static bool IsValidCNID(object ID)
{
if (ID == null)
{
return false;
}
Regex regex = new Regex(@"d{18}|d{15}");
return regex.IsMatch(ID.ToString());
}
#endregion
#region 转换
/// <summary>
/// 转换为日期字符串
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static String Object2DateTimeString(object date)
{
return Object2DateTimeString(date, null);
}
/// <summary>
/// 转换为指定格式日期字符串
/// </summary>
/// <param name="date"></param>
/// <param name="dateFormat"></param>
/// <returns></returns>
public static String Object2DateTimeString(object date, String dateFormat)
{
// 如果date为空,返回空字符串
if (date == null || String.IsNullOrEmpty(date.ToString()))
{
return String.Empty;
}
try
{
// 如果没有设置日期格式,返回默认格式
if (!String.IsNullOrEmpty(dateFormat))
{
return Convert.ToDateTime(date).ToString();
}
else
{
return Convert.ToDateTime(date).ToString(dateFormat);
}
}
catch
{
return String.Empty;
}
}
/// <summary>
/// 转换对日期格式
/// </summary>
/// <param name="date"></param>
/// <param name="replaceDate">转换失败时用于返回的值</param>
/// <returns></returns>
public static DateTime Object2DateTime(object date, DateTime replaceDate)
{
string dateString = Object2DateTimeString(date);
if (dateString.Length > 0)
{
return Convert.ToDateTime(dateString);
}
return replaceDate;
}
/// <summary>
/// 转换开始日期
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime Object2StartDate(object date)
{
return Object2DateTime(date, DateTime.MinValue);
}
/// <summary>
/// 转换结束日期
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime Object2EndDate(object date)
{
return Object2DateTime(date, DateTime.MaxValue);
}
/// <summary>
/// 转换为Int32
/// </summary>
/// <param name="iVal"></param>
/// <param name="replaceVal"></param>
/// <returns></returns>
public static Int32 Object2Int32(object iVal, int replaceVal)
{
if (iVal == null)
{
return replaceVal;
}
try
{
return Convert.ToInt32(iVal);
}
catch
{
return replaceVal;
}
}
/// <summary>
/// 转换成单精度浮点型
/// </summary>
/// <param name="fVal"></param>
/// <param name="replaceVal"></param>
/// <returns></returns>
public static Single Object2Single(object fVal, Single replaceVal)
{
if (fVal == null)
{
return replaceVal;
}
try
{
return Convert.ToSingle(fVal);
}
catch
{
return replaceVal;
}
}
/// <summary>
/// 转换成Decimal
/// </summary>
/// <param name="dVal"></param>
/// <param name="replaceVal"></param>
/// <returns></returns>
public static Decimal Object2Decimal(object dVal, Decimal replaceVal)
{
if (dVal == null)
{
return replaceVal;
}
try
{
return Convert.ToDecimal(dVal);
}
catch
{
return replaceVal;
}
}
/// <summary>
/// 转换成单精度浮点型
/// </summary>
/// <param name="dVal"></param>
/// <param name="replaceVal"></param>
/// <returns></returns>
public static Double Object2Double(object dVal, Double replaceVal)
{
if (dVal == null)
{
return replaceVal;
}
try
{
return Convert.ToDouble(dVal);
}
catch
{
return replaceVal;
}
}
/// <summary>
/// 转换为Boolean类型。
/// 1. 如果值为1:true, 0:false
/// 2. 使用Convert.ToBoolean转换
/// </summary>
/// <param name="bVal"></param>
/// <returns></returns>
public static Boolean Object2Boolean(object bVal)
{
if (bVal == null)
{
return false;
}
if (string.Equals(bVal.ToString(), "1"))
{
return true;
}
if (string.Equals(bVal.ToString(), "0"))
{
return false;
}
try
{
return Convert.ToBoolean(bVal);
}
catch
{
return false;
}
}
/// <summary>
/// 将带小数数值形转换成字符串,非小数返回null(默认不保留无效位)
/// </summary>
/// <param name="val">数值类型</param>
/// <param name="saveLocation">保留小数位</param>
/// <returns></returns>
public static String Number2String(ValueType val, int saveLocation)
{
return Number2String(val, saveLocation, false);
}
/// <summary>
/// 将带小数数值形转换成字符串,非小数返回null
/// </summary>
/// <param name="val">小数</param>
/// <param name="saveLocation">保留小数位</param>
/// <param name="saveInvalidNum">是否保留无效位(如:0.50,true:0.50, false:0.5</param>
/// <returns></returns>
public static String Number2String(ValueType val, int saveLocation, bool saveInvalidNum)
{
char ch = saveInvalidNum ? '0' : '#';
String format = "0.".PadRight(saveLocation + 2, ch);
string result = null;
if (val is Single)
{
result = ((Single)val).ToString(format);
}
if (val is Double)
{
result = ((Double)val).ToString(format);
}
if (val is Decimal)
{
result = ((Decimal)val).ToString(format);
}
return result;
}
#endregion
#region 数据工具
/// <summary>
/// DataSet第一个表是否有数据
/// </summary>
/// <param name="ds">DataSet</param>
/// <returns>true/false</returns>
public static bool DsHasData(DataSet ds)
{
if (ds != null && ds.Tables.Count > 0
&& ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
{
return true;
}
return false;
}
/// <summary>
/// 检查DataTable是否有数据
/// </summary>
/// <param name="dt">DataTable</param>
/// <returns>true/false</returns>
public static bool DtHasData(DataTable dt)
{
if (dt != null && dt.Rows.Count > 0)
{
return true;
}
return false;
}
#endregion
}