常用函数集介绍
/// <summary> /// 检验日期格式是否正确 /// </summary> #region public string IsDateFormat(string strDate) public string IsDateFormat(string strDate) { strDate = strDate.Trim(); Regex r1 = new Regex(@"^(?<year>[1-9][0-9]{0,3})/(?<month>[0-9]{1,2})/(?<day>[0-9]{1,2})$"); Regex r2 = new Regex(@"^(?<year>[1-9][0-9]{0,3})-(?<month>[0-9]{1,2})-(?<day>[0-9]{1,2})$"); Regex r3 = new Regex(@"^(?<year>[1-9][0-9]{0,3})年(?<month>[0-9]{1,2})月(?<day>[0-9]{1,2})日$"); Regex r4 = new Regex(@"^(?<month>[0-9]{1,2})/(?<day>[0-9]{1,2})/(?<year>[1-9][0-9]{0,3})$"); // 取得日期的年,月,日 string year, month, date; if(Regex.IsMatch(strDate,@"^(?<month>[0-9]{1,2})/(?<day>[0-9]{1,2})/(?<year>[1-9][0-9]{3})$")) { year = r4.Match(strDate).Result("${year}"); month = r4.Match(strDate).Result("${month}"); date = r4.Match(strDate).Result("${day}"); } else if (Regex.IsMatch(strDate,@"^(?<year>[1-9][0-9]{0,3})/(?<month>[0-9]{1,2})/(?<day>[0-9]{1,2})$")) { year = r1.Match(strDate).Result("${year}"); month = r1.Match(strDate).Result("${month}"); date = r1.Match(strDate).Result("${day}"); } else if(Regex.IsMatch(strDate,@"^(?<year>[1-9][0-9]{0,3})-(?<month>[0-9]{1,2})-(?<day>[0-9]{1,2})$")) { year = r2.Match(strDate).Result("${year}"); month = r2.Match(strDate).Result("${month}"); date = r2.Match(strDate).Result("${day}"); } else if(Regex.IsMatch(strDate,@"^(?<year>[1-9][0-9]{0,3})年(?<month>[0-9]{1,2})月(?<day>[0-9]{1,2})日$")) { year = r3.Match(strDate).Result("${year}"); month = r3.Match(strDate).Result("${month}"); date = r3.Match(strDate).Result("${day}"); } else { return "error"; } // 最后检查日期的正确性 try { System.DateTime dt = new DateTime(Convert.ToInt32(year), Convert.ToInt32(month), Convert.ToInt32(date)); return dt.ToString("yyyy-MM-dd"); } catch { return "error"; } } #endregion ------------------------------------------------------------------------------------------ /// <summary> /// 检验Email字符串格式是否正确 /// </summary> #region public bool IsEmailFormat(string strEmail) public bool IsEmailFormat(string strEmail) { return Regex.IsMatch(strEmail, @"^([/w-/.]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$"); } #endregion ------------------------------------------------------------------------------------------ /// <summary> /// 转换十五位身份证为十八位的函数。 /// </summary> #region public string ConvertIDCard15to18(string strTemp) public string ConvertIDCard15to18(string strTemp) { int[] arrInt = new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; string arrCh="10X98765432"; int nTemp = 0; if(strTemp.Length==15) { strTemp = strTemp.Substring(0,6) + "19" + strTemp.Substring(6,strTemp.Length-6); for(int i = 0; i < strTemp.Length; i++) { nTemp += int.Parse(strTemp.Substring(i, 1).ToString()) * arrInt[i]; } strTemp += arrCh[nTemp % 11]; } char dd=arrCh[nTemp % 11]; return strTemp; } #endregion ------------------------------------------------------------------------------------------ 下在为判断ASCII码的函数组,仅支持中英文 /// <summary> /// 是否为双字节字符。 /// </summary> public static bool IsTwoBytesChar(char chr) { string str =chr.ToString(); // 使用中文支持编码 Encoding ecode = Encoding.GetEncoding("GB18030"); if (ecode.GetByteCount(str) == 2) { return true; } else { return false; } } /// <summary> /// 得到字符的ASCII码 /// </summary> public static int ASCII(char chr) { Encoding ecode = Encoding.GetEncoding("GB18030"); Byte[] codeBytes = ecode.GetBytes(chr.ToString()); if ( IsTwoBytesChar(chr) ) { // 双字节码为高位乘256,再加低位 // 该为无符号码,再减65536 return (int)codeBytes[0] * 256 + (int)codeBytes[1] - 65536; } else { return (int)codeBytes[0]; } }