using System; using System.Text; namespace HXBTools.Util { /// <summary> /// /// </summary> public class py { public py() { // // TODO: 在此处添加构造函数逻辑 // } public static char GetPyChar(char c) { return GetPyChar("" + (char)c); } public static char GetPyChar(string strName) { short code; if (strName == "" ) return ' '; code = GetGB2312Code(strName); // 英文字符区 if( code >= 32 && code <= 126 ) return char.ToUpper(strName[0]); // 全角字符区 if(strName[0] >= 'A' && strName[0] <= 'Z') return (char)(strName[0] - 'A' + 'A'); if(strName[0] >= 'a' && strName[0] <= 'z') return (char)(strName[0] - 'a' + 'A'); if(strName[0] >= '0' && strName[0] <= '9') return (char)(strName[0] - '0' + '0'); //拼音顺序区. int tmp = 65536 + code; if( (tmp >= 45217 && tmp <= 45252) ) return 'A'; if( (tmp >= 45253 && tmp <= 45760) ) return 'B'; if( (tmp >= 45761 && tmp <= 46317) ) return 'C'; if( (tmp >= 46318 && tmp <= 46825) ) return 'D'; if( (tmp >= 46826 && tmp <= 47009) ) return 'E'; if( (tmp >= 47010 && tmp <= 47296) ) return 'F'; if( (tmp >= 47297 && tmp <= 47613) ) return 'G'; if( (tmp >= 47614 && tmp <= 48118) ) return 'H'; if( (tmp >= 48119 && tmp <= 49061) ) return 'J'; if( (tmp >= 49062 && tmp <= 49323) ) return 'K'; if( (tmp >= 49324 && tmp <= 49895) ) return 'L'; if( (tmp >= 49896 && tmp <= 50370) ) return 'L'; if( (tmp >= 50371 && tmp <= 50613) ) return 'N'; if( (tmp >= 50614 && tmp <= 50621) ) return 'O'; if( (tmp >= 50622 && tmp <= 50905) ) return 'P'; if( (tmp >= 50906 && tmp <= 51386) ) return 'Q'; if( (tmp >= 51387 && tmp <= 51445) ) return 'R'; if( (tmp >= 51446 && tmp <= 52217) ) return 'S'; if( (tmp >= 52218 && tmp <= 52697) ) return 'T'; if( (tmp >= 52698 && tmp <= 52979) ) return 'W'; if( (tmp >= 52980 && tmp <= 53640) ) return 'X'; if( (tmp >= 53689 && tmp <= 54480) ) return 'Y'; if( (tmp >= 54481 && tmp <= 55289) ) return 'Z'; // 转换GB2312内码到区位以检查难检字 int iQh = ((code >> 8) & 0x00ff) - 160; int iQl = (code & 0x000000ff) - 160; if (iQl < 0) { return ' '; // 那些不在gb2312字符集里的字们目前还没有办法。 } int iQ = iQh * 100 + iQl; if (iQ >=5601 && iQ <= 8794) // 区位的难检字区 { int pos = ( iQh - 56 ) * 94 + iQl - 1; if (pos < 0 || pos >= sCodeData.Length) { return ' '; } return sCodeData[pos - 1]; } return ' '; } /// <summary> /// 难检字码表. /// </summary> private static string sCodeData = "CJWGNSPGCENEGYPBTWXZDXYKYGTPJNMJQMBSGZSCYJSYYFPGGBZGYDYWJKGALJSWKBJQHYJWPDZLSGMR" + "YBYWWCCGZNKYDGTTNGJEYEKZYDCJNMCYLQLYPYQBQRPZSLWBDGKJFYXJWCLTBNCXJJJJCXDTQSQZYCDXXHGCKBPHFFSS" + "PYBGMXJBBYGLBHLSSMZMPJHSOJNGHDZCDKLGJHSGQZHXQGKEZZWYMCSCJNYETXADZPMDSSMZJJQJYZCJJFWQJBDZBJGD" + "NZCBWHGXHQKMWFBPBQDTJJZKQHYLCGXFPTYJYYZPSJLFCHMQSHGMMXSXJPKDCMBBQBEFSJWHWWGCKPYLQBGLDLCCTNMA" + "EDDKSJNGKCSGXLHZAYBDBTSDKDYLHGYMYLCXPYCJNDQJWXQXFYYFJLEJBZRWCCQHQCSBZKYMGPLBMCRQCFLNYMYQMSQT" + "RBCJTHZTQFRXCHXMCJCJLXQGJMSHZKBSWXEMDLCKFSYDSGLYCJJSSJNQBJCTYHBFTDCYJDGWYGHQFRXWCKQKXEBPDJPX" + "JQSRMEBWGJLBJSLYYSMDXLCLQKXLHTJRJJMBJHXHWYWCBHTRXXGLHJHFBMGYKLDYXZPPLGGPMTCBBAJJZYLJTYANJGBJ" + "FLQGDZYQCAXBKCLECJSZNSLYZHLXLZCGHBXZHZNYTDSBCJKDLZAYFFYDLABBGQSZKGGLDNDNYSKJSHDLXXBCGHXYGGDJ" + "MMZNGMMCCGWZSZXSJBZNMLZDTHCQYDBDLLSCDDNLKJYHJSYCJLKOHQASDHNHCSGAEHDAASHTCPLCPQYBSDMPJLPCJAQL" + "CDHJJASPRCHNGJNLHLYYQYHWZPNCCGWWMZFFJQQQQXXACLBHKDJXDGMMYDJXZLLSYGXGKJRYWZWYCLZMCSJZLDBNDCFC" + "XYHLSCHYCJQPPQAGMNYXPFRKSSBJLYXYJJGLNSCMHCWWMNZJJLHMHCHSYPPTTXRYCSXBYHCSMXJSXNBWGPXXTAYBGAJC" + "XLYPDCCWQOCWKCCSBNHCPDYZNBCYYTYCKSKYBSQKKYTQQXFCWCHCWKELCQBSQYJQCCLMTHSYWHMKTLKJLYCHWHEQJHTJ" + "HPPQPQSCFYMMCMGBMHGLGSLLYSDLLLJPCHMJHWLJCYHZJXHDXJLHXRSWLWZJCBXMHZQXSDZPMGFCSGLSDYMJSHXPJXOM" + "YQKNMYBLRTHBCFTPMGYXLCHLHLZYLXGSSSSCCLSLDCLEPBHSHXYYFHBMGDFYCNJQWLQHJJCYWJZTEJJDHFBLQXTQKWHD" + "CHQXAGTLXLJXMSLJHDZKZJECXJCJNMBBJCSFYWKBJZGHYSDCPQYRSLJPCLPWXSDWEJBJCBCNAYTMGMBAPCLYQBCLZXCB" + "NMSGGFNZJJBZSFQYNDXHPCQKZCZWALSBCCJXPOZGWKYBSGXFCFCDKHJBSTLQFSGDSLQWZKXTMHSBGZHJCRGLYJBPMLJS" + "XLCJQQHZMJCZYDJWBMJKLDDPMJEGXYHYLXHLQYQHKYCWCJMYHXNATJHYCCXZPCQLBZWWWTWBQCMLBMYNJCCCXBBSNZZL" + "JPLJXYZTZLGCLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNCLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCCZH" + "GYJDJQQLZXJYLDLBCYAMCSTYLBDJBYREGKLZDZHLDSZCHZNWCZCLLWJQJJJKDGJCOLBBZPPGLGHTGZCYGEZMYCNQCYCY" + "HBHGXKAMTXYXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWGJJJPKJSBGBMMCJSSCLPQPDXCDYYKYPCJDDYYGYWCHJRTGCNYQL" + "DKLJCZZGZCCJGDYKSGPZMDLCPHNJAFYZDJCNMWESCSGLBTZCGMSDLLYXQSXSBLJSBBSGGHFJLWPMZJNLYYWDQSHZXTYY" + "WHMCYHYWDBXBTLMSWYYFSBJCBDXXLHJHFPSXZQHFZMQCZTQCXZXRDKDJHNNYZQQFNQDMMGNYDXMJGDHCDYCBFFALLZTD" + "LTFKMXQZDNGEQDBDCZJDXBZGSQQDDJCMBKXFFXMKDMCSYCHZCMLJDJYNHPRSJMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJJ" + "GYPZLTCSMCNBTJBHFKDHBYZGKPBBYMTDLSXSBNPDKLEYCJNYCDYKZDDHQGSDZSCTARLLTKZLGECLLKJLJJAQNBDGGGHF" + "JTZQJSECSHALQFMMGJNLYJBBTMLYCXDCJPLDLPCQDHSYCBZSCKBZMSLJFLHRBJSNBRGJHXPDGDJYBZGDLGCSEZGXLBLG" + "YXTWMABCHECMWYJYZLLJJSHLGNDJLSLYGKDZPZXJYYZLPCXSZFGWYYDLYHCLJSCMBJHBLYJLYCBLYDPDQYSXKTBYTDKD" + "XJYPCNRJMFDJGKLCCJBCTBJDDBBLBLCDQRPPXJCGLZCSHLTOLJNMDDDLNGKAQAKGJGYHHEZNMSHRPHQQJCHGMFPRXCJG" + "DYCHGHLYRZQLCNGJNZSQDKQJYMSZSWLCFQJQXGBGGXMDJWLMCRNFKKFSYYLJBMQAMMMYCCTBSHCPTXXZZSMPHFSHMCLM" + "LDJFYQXSDYJDJJZZHQPDSZGLSSJBCKBXYQZJSGPSXJZQZNQTBDKWXJKHHGFLBCSMDLDGDZDBLZKYCQNNCSYBZBFGLZZX" + "SWMSCCMQNJQSBDQSJTXXMBLDXCCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLCZNZJCDGZYGCDXMZYSCTLKPHTXHTLBJXJ" + "LXSCDQCCBBQJFQZFSLTJBTKQBSXJJLJCHCZDBZJDCZJCCPRNLQCGPFCZLCLCXZDMXMPHGSGZGSZZQJXLWTJPFSYASLCJ" + "BTCKWCWMYTCSJJLJCQLWZMALBXYFBPNLSCHTGJWEJJXXGLLJSTGSHJQLZFKCGNNDSZFDEQFHBSAQDGYLBXMMYGSZLDYD" + "JMJJRGBJGKGDHGKBLGKBDMBYLXWCXYTTYBKMRJJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ"; public static short GetGB2312Code(string s) { if (s == null || s.Length == 0) return 32; char c = s[0]; if (c >= ' ' && c <= '~') { return (short)c; } byte [] arBytes = Encoding.GetEncoding(936).GetBytes(s); if (arBytes.Length < 2) { return (short)arBytes[0]; } return (short)(arBytes[0] << 8 | arBytes[1]); } public static short GetGB2312Code(char c) { return GetGB2312Code("" + (char)c); } } }

评论