涵盖网站基本使用的正则表达式的验证方法.cs
2014-02-11 13:09
441 查看
using System; using System.Text.RegularExpressions; using System.Text; using System.IO; using System.Security.Cryptography; namespace Chen.Common { /// <summary> /// 数组拓展方法 /// </summary> public static class StringUtil { #region 拓展方法 #region 判断是否为空或者null /// <summary> /// 判断是否为空或者null /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsNullOrEmpty(this string s) { return string.IsNullOrEmpty(s); } #endregion #region 判断是否为字母 /// <summary> /// 判断是否为字母 /// </summary> /// <param name="str"></param> /// <returns></returns> public static bool IsLetter(this string str) { return Regex.IsMatch(str, @"^[A-Za-z]+$"); } #endregion #region 判断是否为数字 /// <summary> /// 判断是否为数字 /// </summary> /// <param name="str"></param> /// <returns></returns> public static bool IsNumer(this string str) { return Regex.IsMatch(str, @"^\d+$"); } #endregion #region 判断是否为中文字符 /// <summary> /// 判断是否为中文字符 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsChinese(this string s) { return Regex.IsMatch(s, @"^[\u4e00-\u9fa5]+$"); } #endregion #region 判断是否为字母数字组合 /// <summary> /// 判断是否为字母数字组合 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsCharNumber(this string s) { return Regex.IsMatch(s, @"^\w+$"); } #endregion #region 判断是否为字母数字下划线组合 /// <summary> /// 判断是否为字母数字下划线组合 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsName(this string s) { return Regex.IsMatch(s, @"^[a-zA-Z0-9_]+$"); } #endregion #region 判断是否为字符或是数字 /// <summary> /// 判断是否为字符或是数字 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsCharNum(this string s) { return Regex.IsMatch(s, @"^[A-Za-z0-9]+$"); } #endregion #region 判断是整数或小数 /// <summary> /// 判断是整数或小数 /// </summary> /// <param name="Expression"></param> /// <returns></returns> public static bool IsDouble(this object Expression) { int ret; return int.TryParse(Expression.ToString(), out ret); } #endregion #region 判断一个字符串是否是正数型的字符串 /// <summary> /// 判断一个字符串是否是正数型的字符串 /// </summary> /// <param name="strValue"></param> /// <returns></returns> public static bool IsUnsign(this string strValue) { int ret; if (strValue.Substring(0, 1) == "-") { return false; } else { return int.TryParse(strValue, out ret); } } #endregion #region 判断一个字符串是否是正数型的字符串 /// <判断一个字符串是否是正数型的字符串> /// 判断一个字符串是否是正数型的字符串 /// </判断一个字符串是否是正数型的字符串> /// <字符串 name= "strValue "> 字符串 </字符串> /// <是则返回true,否则返回false> 是则返回true,否则返回false </是则返回true,否则返回false> public static bool IsUnsignDouble(this string strValue) { double ret; if (strValue.Substring(0, 1) == "-") { return false; } else { return double.TryParse(strValue, out ret); } } #endregion #region 判断是否为Email /// <summary> /// 判断是否为Email /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsEmail(this string s) { return Regex.IsMatch(s, @"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"); } #endregion #region 判断是否为IP地址 /// <summary> /// 判断是否为IP地址 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsIP(this string s) { return Regex.IsMatch(s, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"); } #endregion #region 判断是否为URL地址 /// <summary> /// 判断是否为URL地址 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsURL(this string s) { return Regex.IsMatch(s, @"^([a-zA-z]+://)?(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"); } #endregion #region 判断是否为正确的身份证号码 /// <summary> /// 判断是否为正确的身份证号码 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsID(this string s) { return Regex.IsMatch(s, @"^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$"); } #endregion #region 判断是否为电话号码格式 /// <summary> /// 判断是否为电话号码格式 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsPhone(this string s) { return Regex.IsMatch(s, @"((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)"); } #endregion #region 判断是否为日期 /// <summary> /// 判断是否为日期 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool IsDate(this string s) { try { DateTime.Parse(s); return true; } catch { return false; } } #endregion #region 移除Html标记 /// <summary> /// 移除Html标记 /// </summary> /// <param name="content"></param> /// <returns></returns> public static string RemoveHtml(this string content) { string regexstr = @"<[^>]*>"; return Regex.Replace(content, regexstr, string.Empty, RegexOptions.IgnoreCase); } #endregion #region 过滤HTML中的不安全标签 /// <summary> /// 过滤HTML中的不安全标签 /// </summary> /// <param name="content"></param> /// <returns></returns> public static string RemoveUnsafeHtml(this string content) { content = Regex.Replace(content, @"(\<|\s+)o([a-z]+\s?=)", "$1$2", RegexOptions.IgnoreCase); content = Regex.Replace(content, @"(script|frame|form|meta|behavior|style)([\s|:|>])+", "$1.$2", RegexOptions.IgnoreCase); return content; } #endregion #region 检测是否有Sql危险字符 /// <检测是否有Sql危险字符> /// 检测是否有Sql危险字符 /// </检测是否有Sql危险字符> /// <要判断字符串 name="str">要判断字符串</要判断字符串> /// <判断结果>判断结果</判断结果> public static bool IsSafeSqlString(this string str) { return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']"); } #endregion #region 检测是否有危险的可能用于链接的字符串 /// <检测是否有危险的可能用于链接的字符串> /// 检测是否有危险的可能用于链接的字符串 /// </检测是否有危险的可能用于链接的字符串> /// <要判断字符串 name="str">要判断字符串</要判断字符串> /// <判断结果>判断结果</判断结果> public static bool IsSafeUserInfoString(string str) { return !Regex.IsMatch(str, @"^\s*$|^c:\\con\\con$|[%,\*" + "\"" + @"\s\t\<\>\&]|游客|^Guest"); } #endregion #region 对表 表单内容进行转换HTML操作 /// <对表 表单内容进行转换HTML操作,> /// 对表 表单内容进行转换HTML操作 /// </对表 表单内容进行转换HTML操作,> /// <html字符串 name="s">html字符串</html字符串> public static string HtmlCode(string s) { string str = ""; str = s.Replace(">", ">"); str = s.Replace("<", "<"); str = s.Replace(" ", " "); str = s.Replace("\n", "<br />"); str = s.Replace("\r", "<br />"); str = s.Replace("\r\n", "<br />"); return str; } #endregion #region 过滤xss攻击脚本 /// <过滤xss攻击脚本 > /// 过滤xss攻击脚本 /// </过滤xss攻击脚本 > /// <传入字符串 name="input">传入字符串</传入字符串> /// <过滤后的字符串>过滤后的字符串</过滤后的字符串> public static string FilterXSS(string html) { if (string.IsNullOrEmpty(html)) return string.Empty; // CR(0a) ,LF(0b) ,TAB(9) 除外,过滤掉所有的不打印出来字符. // 目的防止这样形式的入侵 <java\0script> // 注意:\n, \r, \t 可能需要单独处理,因为可能会要用到 string ret = System.Text.RegularExpressions.Regex.Replace( html, "([\x00-\x08][\x0b-\x0c][\x0e-\x20])", string.Empty); ret = ret.Replace("\t", ""); //(补充,过滤TAB空格,那也是危险的XSS字符) //替换所有可能的16和10进制构建的恶意代码 //<IMG SRC=@avascript:a&_#X6Cert('XSS')> ret = System.Text.RegularExpressions.Regex.Replace(ret, @"([x|X]?\d+);?", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase); //过滤Javascript事件触发的恶意代码 string[] keywords = { "javascript", "vbscript", "expression", "applet", "meta", "xml", "blink", "script", "embed", "object", "iframe", "frame", "frameset", "ilayer", "layer", "bgsound", "title", "base", "onabort", "onactivate", "onafterprint", "onafterupdate", "onbeforeactivate", "onbeforecopy", "onbeforecut", "onbeforedeactivate", "onbeforeeditfocus", "onbeforepaste", "onbeforeprint", "onbeforeunload", "onbeforeupdate", "onblur", "onbounce", "oncellchange", "onchange", "onclick", "oncontextmenu", "oncontrolselect", "oncopy", "oncut", "ondataavailable", "ondatasetchanged", "ondatasetcomplete", "ondblclick", "ondeactivate", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "onerror", "onerrorupdate", "onfilterchange", "onfinish", "onfocus", "onfocusin", "onfocusout", "onhelp", "onkeydown", "onkeypress", "onkeyup", "onlayoutcomplete", "onload", "onlosecapture", "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onmove", "onmoveend", "onmovestart", "onpaste", "onpropertychange", "onreadystatechange", "onreset", "onresize", "onresizeend", "onresizestart", "onrowenter", "onrowexit", "onrowsdelete", "onrowsinserted", "onscroll", "onselect", "onselectionchange", "onselectstart", "onstart", "onstop", "onsubmit", "onunload"}; bool found = true; while (found) { var retBefore = ret; for (int i = 0; i < keywords.Length; i++) { //string pattern = "/"; (补允, 正则前台加/过滤不到) string pattern = ""; for (int j = 0; j < keywords[i].Length; j++) { if (j > 0) pattern = string.Concat(pattern, '(', "([x|X]0{0,8}([9][a][b]);?)?", "|({0,8}([9][10][13]);?)?", ")?"); pattern = string.Concat(pattern, keywords[i][j]); } string replacement = string.Concat(keywords[i].Substring(0, 2), "<x>", keywords[i].Substring(2)); ret = System.Text.RegularExpressions.Regex.Replace(ret, pattern, replacement, System.Text.RegularExpressions.RegexOptions.IgnoreCase); if (ret == retBefore) found = false; } } return ret; } #endregion #region 字符串操作 #region 替换指定位置的字符串 /// <summary> /// 替换指定位置的字符串 /// </summary> /// <param name="str"></param> /// <param name="oldStr">被替换的字符串</param> /// <param name="newStr">替换的字符串</param> /// <param name="index">第N个出现的地方,从1起编</param> public static string ReplaceAt(this string str, string oldStr, string newStr, int index) { if (oldStr == "") { return str; } string tmp = str;//字符串的副本 int num = 0, start = 0, end = 0;//已出现次数,替换的起始位置和结束位置 while (true) { var _index = tmp.IndexOf(oldStr);//寻找被替换字符串的位置 if (_index != -1)//如果未找到 { num++;//找到则次数+1 if (num != index)//到了指定的位置 { //截取字符串的含义:指定字符串的长度以及它第一次出现的位置 tmp = tmp.Substring(_index + oldStr.Length);//去掉该字符串 start += _index + oldStr.Length;//将该字符串的长度设为起始长度 } else { start += _index; end = oldStr.Length; break; } } else { break; } } if (start != 0 && num == index) { str = str.Remove(start, end); str = str.Insert(start, newStr); } return str; } #endregion #region 寻找指定字符在某字符串中出现的次数 /// <summary> /// 寻找指定字符在某字符串中出现的次数 /// </summary> /// <param name="str"></param> /// <param name="oldStr">被寻找的字符串</param> /// <returns></returns> public static int Find(this string str, string oldStr) { var start = 0; var num = 0; while (true) { var _index = str.IndexOf(oldStr, start);//寻找被替换字符串的位置 if (_index != -1)//如果找到 { num++;//找到则次数+1 start = _index + oldStr.Length;//将该字符串的长度设为起始长度 } else //如果找不到,则退出 { break; } } return start != 0 ? num : -1; } #endregion #endregion #endregion #region 非拓展方法 #region 正则读取xml字符串中属性的值 /// <summary> /// 正则读取xml字符串中属性的值 /// </summary> /// <param name="s">需要读取的xml字符串</param> /// <param name="value">需要读取的属性</param> /// <returns></returns> public static string RegAttrValue(string s, string value) { Regex r = new Regex(value + "=\"[^\"]*\""); StringBuilder sb = new StringBuilder(r.Match(s).ToString()); return sb.Replace("\"", "").ToString().Replace(value, "").ToString().Replace("=", "").ToString(); } #endregion #region 正则读取xml字符串中结点的值 /// <summary> /// 正则读取xml字符串中结点的值 /// </summary> /// <param name="s">需要读取的xml字符串</param> /// <param name="value">需要读取的结点</param> /// <returns></returns> public static string RegNodeValue(string s, string value) { Regex r = new Regex("<" + value + ">.*" + "</" + value + ">"); StringBuilder sb = new StringBuilder(r.Match(s).ToString()); return sb.Replace("<" + value + ">", "").Replace("</" + value + ">", "").ToString(); } #endregion #region 转全角的函数(SBC case) /// <summary> /// 转全角的函数(SBC case) /// </summary> /// <param name="input"></param> /// <returns></returns> public static string ToSBC(string input) { //半角转全角: char[] c = input.ToCharArray(); for (int i = 0; i < c.Length; i++) { if (c[i] == 32) { c[i] = (char)12288; continue; } if (c[i] < 127) c[i] = (char)(c[i] + 65248); } return new string(c); } #endregion #region 转半角的函数(SBC case) /// <summary> /// 转半角的函数(SBC case) /// </summary> /// <param name="input">输入</param> /// <returns></returns> public static string ToDBC(string input) { char[] c = input.ToCharArray(); for (int i = 0; i < c.Length; i++) { if (c[i] == 12288) { c[i] = (char)32; continue; } if (c[i] > 65280 && c[i] < 65375) c[i] = (char)(c[i] - 65248); } return new string(c); } #endregion #region 从字符串里随机得到,规定个数的字符串. /// <summary> /// 从字符串里随机得到,规定个数的字符串. /// </summary> /// <param name="allChar"></param> /// <param name="CodeCount"></param> /// <returns></returns> private static string GetRandomCode(string allChar, int CodeCount) { //string allChar = "1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"; string[] allCharArray = allChar.Split(','); string RandomCode = ""; int temp = -1; Random rand = new Random(); for (int i = 0; i < CodeCount; i++) { if (temp != -1) { rand = new Random(temp * i * ((int)DateTime.Now.Ticks)); } int t = rand.Next(allCharArray.Length - 1); while (temp == t) { t = rand.Next(allCharArray.Length - 1); } temp = t; RandomCode += allCharArray[t]; } return RandomCode; } #endregion #region 转换人民币大小金额 /// <summary> /// 转换人民币大小金额 /// </summary> /// <param name="num">金额</param> /// <returns>返回大写形式</returns> public static string CmycurD(decimal num) { string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字 string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字 string str3 = ""; //从原num值中取出的值 string str4 = ""; //数字的字符串形式 string str5 = ""; //人民币大写金额形式 int i; //循环变量 int j; //num的值乘以100的字符串长度 string ch1 = ""; //数字的汉语读法 string ch2 = ""; //数字位的汉字读法 int nzero = 0; //用来计算连续的零值是几个 int temp; //从原num值中取出的值 num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数 str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式 j = str4.Length; //找出最高位 if (j > 15) { return "溢出"; } str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分 //循环取出每一位需要转换的值 for (i = 0; i < j; i++) { str3 = str4.Substring(i, 1); //取出需转换的某一位的值 temp = Convert.ToInt32(str3); //转换为数字 if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15)) { //当所取位数不为元、万、亿、万亿上的数字时 if (str3 == "0") { ch1 = ""; ch2 = ""; nzero = nzero + 1; } else { if (str3 != "0" && nzero != 0) { ch1 = "零" + str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } else { ch1 = str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } } } else { //该位是万亿,亿,万,元位等关键位 if (str3 != "0" && nzero != 0) { ch1 = "零" + str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } else { if (str3 != "0" && nzero == 0) { ch1 = str1.Substring(temp * 1, 1); ch2 = str2.Substring(i, 1); nzero = 0; } else { if (str3 == "0" && nzero >= 3) { ch1 = ""; ch2 = ""; nzero = nzero + 1; } else { if (j >= 11) { ch1 = ""; nzero = nzero + 1; } else { ch1 = ""; ch2 = str2.Substring(i, 1); nzero = nzero + 1; } } } } } if (i == (j - 11) || i == (j - 3)) { //如果该位是亿位或元位,则必须写上 ch2 = str2.Substring(i, 1); } str5 = str5 + ch1 + ch2; if (i == j - 1 && str3 == "0") { //最后一位(分)为0时,加上“整” str5 = str5 + '整'; } } if (num == 0) { str5 = "零元整"; } return str5; } /**/ /// <summary> /// 一个重载,将字符串先转换成数字在调用CmycurD(decimal num) /// </summary> /// <param name="num">用户输入的金额,字符串形式未转成decimal</param> /// <returns></returns> public static string CmycurD(string numstr) { try { decimal num = Convert.ToDecimal(numstr); return CmycurD(num); } catch { return "非数字形式!"; } } #endregion #region 汉字转换为拼音 private static int[] pyValue = new int[] { -20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,-20242,-20230,-20051,-20036, -20032,-20026,-20002,-19990,-19986,-19982,-19976,-19805,-19784,-19775,-19774,-19763, -19756,-19751,-19746,-19741,-19739,-19728,-19725,-19715,-19540,-19531,-19525,-19515, -19500,-19484,-19479,-19467,-19289,-19288,-19281,-19275,-19270,-19263,-19261,-19249, -19243,-19242,-19238,-19235,-19227,-19224,-19218,-19212,-19038,-19023,-19018,-19006, -19003,-18996,-18977,-18961,-18952,-18783,-18774,-18773,-18763,-18756,-18741,-18735, -18731,-18722,-18710,-18697,-18696,-18526,-18518,-18501,-18490,-18478,-18463,-18448, -18447,-18446,-18239,-18237,-18231,-18220,-18211,-18201,-18184,-18183, -18181,-18012, -17997,-17988,-17970,-17964,-17961,-17950,-17947,-17931,-17928,-17922,-17759,-17752, -17733,-17730,-17721,-17703,-17701,-17697,-17692,-17683,-17676,-17496,-17487,-17482, -17468,-17454,-17433,-17427,-17417,-17202,-17185,-16983,-16970,-16942,-16915,-16733, -16708,-16706,-16689,-16664,-16657,-16647,-16474,-16470,-16465,-16459,-16452,-16448, -16433,-16429,-16427,-16423,-16419,-16412,-16407,-16403,-16401,-16393,-16220,-16216, -16212,-16205,-16202,-16187,-16180,-16171,-16169,-16158,-16155,-15959,-15958,-15944, -15933,-15920,-15915,-15903,-15889,-15878,-15707,-15701,-15681,-15667,-15661,-15659, -15652,-15640,-15631,-15625,-15454,-15448,-15436,-15435,-15419,-15416,-15408,-15394, -15385,-15377,-15375,-15369,-15363,-15362,-15183,-15180,-15165,-15158,-15153,-15150, -15149,-15144,-15143,-15141,-15140,-15139,-15128,-15121,-15119,-15117,-15110,-15109, -14941,-14937,-14933,-14930,-14929,-14928,-14926,-14922,-14921,-14914,-14908,-14902, -14894,-14889,-14882,-14873,-14871,-14857,-14678,-14674,-14670,-14668,-14663,-14654, -14645,-14630,-14594,-14429,-14407,-14399,-14384,-14379,-14368,-14355,-14353,-14345, -14170,-14159,-14151,-14149,-14145,-14140,-14137,-14135,-14125,-14123,-14122,-14112, -14109,-14099,-14097,-14094,-14092,-14090,-14087,-14083,-13917,-13914,-13910,-13907, -13906,-13905,-13896,-13894,-13878,-13870,-13859,-13847,-13831,-13658,-13611,-13601, -13406,-13404,-13400,-13398,-13395,-13391,-13387,-13383,-13367,-13359,-13356,-13343, -13340,-13329,-13326,-13318,-13147,-13138,-13120,-13107,-13096,-13095,-13091,-13076, -13068,-13063,-13060,-12888,-12875,-12871,-12860,-12858,-12852,-12849,-12838,-12831, -12829,-12812,-12802,-12607,-12597,-12594,-12585,-12556,-12359,-12346,-12320,-12300, -12120,-12099,-12089,-12074,-12067,-12058,-12039,-11867,-11861,-11847,-11831,-11798, -11781,-11604,-11589,-11536,-11358,-11340,-11339,-11324,-11303,-11097,-11077,-11067, -11055,-11052,-11045,-11041,-11038,-11024,-11020,-11019,-11018,-11014,-10838,-10832, -10815,-10800,-10790,-10780,-10764,-10587,-10544,-10533,-10519,-10331,-10329,-10328, -10322,-10315,-10309,-10307,-10296,-10281,-10274,-10270,-10262,-10260,-10256,-10254 }; private static string[] pyName = new string[] { "A","Ai","An","Ang","Ao","Ba","Bai","Ban","Bang","Bao","Bei","Ben", "Beng","Bi","Bian","Biao","Bie","Bin","Bing","Bo","Bu","Ba","Cai","Can", "Cang","Cao","Ce","Ceng","Cha","Chai","Chan","Chang","Chao","Che","Chen","Cheng", "Chi","Chong","Chou","Chu","Chuai","Chuan","Chuang","Chui","Chun","Chuo","Ci","Cong", "Cou","Cu","Cuan","Cui","Cun","Cuo","Da","Dai","Dan","Dang","Dao","De", "Deng","Di","Dian","Diao","Die","Ding","Diu","Dong","Dou","Du","Duan","Dui", "Dun","Duo","E","En","Er","Fa","Fan","Fang","Fei","Fen","Feng","Fo", "Fou","Fu","Ga","Gai","Gan","Gang","Gao","Ge","Gei","Gen","Geng","Gong", "Gou","Gu","Gua","Guai","Guan","Guang","Gui","Gun","Guo","Ha","Hai","Han", "Hang","Hao","He","Hei","Hen","Heng","Hong","Hou","Hu","Hua","Huai","Huan", "Huang","Hui","Hun","Huo","Ji","Jia","Jian","Jiang","Jiao","Jie","Jin","Jing", "Jiong","Jiu","Ju","Juan","Jue","Jun","Ka","Kai","Kan","Kang","Kao","Ke", "Ken","Keng","Kong","Kou","Ku","Kua","Kuai","Kuan","Kuang","Kui","Kun","Kuo", "La","Lai","Lan","Lang","Lao","Le","Lei","Leng","Li","Lia","Lian","Liang", "Liao","Lie","Lin","Ling","Liu","Long","Lou","Lu","Lv","Luan","Lue","Lun", "Luo","Ma","Mai","Man","Mang","Mao","Me","Mei","Men","Meng","Mi","Mian", "Miao","Mie","Min","Ming","Miu","Mo","Mou","Mu","Na","Nai","Nan","Nang", "Nao","Ne","Nei","Nen","Neng","Ni","Nian","Niang","Niao","Nie","Nin","Ning", "Niu","Nong","Nu","Nv","Nuan","Nue","Nuo","O","Ou","Pa","Pai","Pan", "Pang","Pao","Pei","Pen","Peng","Pi","Pian","Piao","Pie","Pin","Ping","Po", "Pu","Qi","Qia","Qian","Qiang","Qiao","Qie","Qin","Qing","Qiong","Qiu","Qu", "Quan","Que","Qun","Ran","Rang","Rao","Re","Ren","Reng","Ri","Rong","Rou", "Ru","Ruan","Rui","Run","Ruo","Sa","Sai","San","Sang","Sao","Se","Sen", "Seng","Sha","Shai","Shan","Shang","Shao","She","Shen","Sheng","Shi","Shou","Shu", "Shua","Shuai","Shuan","Shuang","Shui","Shun","Shuo","Si","Song","Sou","Su","Suan", "Sui","Sun","Suo","Ta","Tai","Tan","Tang","Tao","Te","Teng","Ti","Tian", "Tiao","Tie","Ting","Tong","Tou","Tu","Tuan","Tui","Tun","Tuo","Wa","Wai", "Wan","Wang","Wei","Wen","Weng","Wo","Wu","Xi","Xia","Xian","Xiang","Xiao", "Xie","Xin","Xing","Xiong","Xiu","Xu","Xuan","Xue","Xun","Ya","Yan","Yang", "Yao","Ye","Yi","Yin","Ying","Yo","Yong","You","Yu","Yuan","Yue","Yun", "Za", "Zai","Zan","Zang","Zao","Ze","Zei","Zen","Zeng","Zha","Zhai","Zhan", "Zhang","Zhao","Zhe","Zhen","Zheng","Zhi","Zhong","Zhou","Zhu","Zhua","Zhuai","Zhuan", "Zhuang","Zhui","Zhun","Zhuo","Zi","Zong","Zou","Zu","Zuan","Zui","Zun","Zuo" }; /// <summary> /// 把汉字转换成拼音(全拼) /// </summary> /// <param name="hzString">汉字字符串</param> /// <param name="IsFiltrate">是否过滤多余的</param> /// <returns>转换后的拼音(全拼)字符串</returns> public static string ConvertToPinYin(string hzString, bool IsFiltrate) { // 匹配中文字符 Regex regex = new Regex("^[\u4e00-\u9fa5]$"); byte[] array = new byte[2]; StringBuilder pyString = new StringBuilder(); int chrAsc = 0; int i1 = 0; int i2 = 0; char[] noWChar = hzString.ToCharArray(); for (int j = 0; j < noWChar.Length; j++) { // 中文字符 if (regex.IsMatch(noWChar[j].ToString())) { array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString()); i1 = (short)(array[0]); i2 = (short)(array[1]); chrAsc = i1 * 256 + i2 - 65536; if (chrAsc > 0 && chrAsc < 160) { pyString.Append(noWChar[j]); } else { // 修正部分文字 if (chrAsc == -9254) // 修正“圳”字 pyString.Append("Zhen"); else { for (int i = (pyValue.Length - 1); i >= 0; i--) { if (pyValue[i] <= chrAsc) { pyString.Append(pyName[i]); break; } } } } } // 非中文字符 else { if (IsFiltrate == true) { //过滤掉非英文非数字的字符 Regex filtrateRegex = new Regex("^[A-Za-z0-9]+$"); if (filtrateRegex.IsMatch(noWChar[j].ToString())) { pyString.Append(noWChar[j].ToString()); } else { pyString.Append("-"); } } else { pyString.Append(noWChar[j].ToString()); } } } return pyString.ToString(); } #endregion #region 取随机数(数字) /// <summary> /// 取随机数(数字) /// </summary> /// <param name="length">随机数长度</param> /// <returns></returns> public static string BuildRandomStr(int length) { Random rand = new Random(); int num = rand.Next(); string str = num.ToString(); if (str.Length > length) { str = str.Substring(0, length); } else if (str.Length < length) { int n = length - str.Length; while (n > 0) { str += "2"; n--; } } return str; } #endregion #region 生成随机字母字符串(数字字母混和) /// <summary> /// 生成随机字母字符串(数字字母混和) /// </summary> /// <param name="codeCount">待生成的位数</param> /// <param name="rep">遍历生成随机传遍历当前数</param> /// <returns>生成的字母字符串</returns> public static string GenerateCheckCode(int codeCount, int rep) { string str = string.Empty; long num2 = DateTime.Now.Ticks + rep; Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep))); for (int i = 0; i < codeCount; i++) { char ch; int num = random.Next(); if ((num % 2) == 0) { ch = (char)(0x30 + ((ushort)(num % 10))); } else { ch = (char)(0x41 + ((ushort)(num % 0x1a))); } str = str + ch.ToString(); } return str; } #endregion #endregion } }
相关文章推荐
- 《十二生肖运程图》网站欣赏
- 架构的那些事
- DRM架构介绍
- 后台架构常用开源项目
- 在线编辑html的网站
- graphlab-架构分析
- 2013年最精致的企业网站设计欣赏【系列四】
- 烂泥:真实机访问虚拟机中的网站
- 网站常用技术地址
- [MDIT每天一小时]Android系统架构分析
- 一个关于live2d资料比较全面的网站
- 高可用dns方案 推荐
- 网站后台禁止搜索引擎抓取
- 架构系列一:架构的分析与设计
- 【i黑马】网站运营者之痛:做了三年的网站为何流量还在500IP
- hbase常去学习网站
- JAVA经典网站
- 图文解说-如何搭建一个大型MVC开发基础架构?
- 没有sln文件, visual studio怎么打开网站
- 获取网站根目录C#