More servicesWindows Live
HomeHotmailSpacesOneCare
 
MSN
Sign in
 
 
Spaces home  haoruoanPhotosProfileFriendsMore Tools Explore the Spaces community

haoruoan

December 29

得到汉字的拼音首字母 , 更好一点的版本.

随后再来一个再更好一点的.

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] >= '' && strName[0] <= '') return (char)(strName[0] - '' + 'A');

 if(strName[0] >= '' && strName[0] <= '') return (char)(strName[0] - '' + 'A');

 if(strName[0] >= '' && strName[0] <= '') return (char)(strName[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;

 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 ' ';

}

 /// /// 难检字码表. /// 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);

}