获取字符串中的汉字拼音首字母
(根据http://blog.csdn.net/iwebsms/archive/2004/09/28/119851.aspx修改)
1public class CLetter
2{
3 private string _string;
4 public CLetter(string IndexTxt)
5 {
6 _string = string.Empty;
7 if (IndexTxt.Length == 0) return;
8 _string = IndexCode(IndexTxt);
9 }
10 public string FirtLetters
11 {
12 get { return _string; }
13 }
14 //返回给定字符串的首字母
15 private String IndexCode(string IndexTxt)
16 {
17 String _Temp = null;
18 for (int i = 0; i < IndexTxt.Length; i++)
19 _Temp = _Temp + GetOneIndex(IndexTxt.Substring(i, 1));
20 return _Temp;
21 }
22
23 //得到单个字符的首字母
24 private String GetOneIndex(String OneIndexTxt)
25 {
26 if (Convert.ToChar(OneIndexTxt) >= 0 && Convert.ToChar(OneIndexTxt) < 256)
27 return OneIndexTxt;
28 else
29 {
30 Encoding gb2312 = Encoding.GetEncoding("gb2312");
31 byte[] unicodeBytes = Encoding.Unicode.GetBytes(OneIndexTxt);
32 byte[] gb2312Bytes = Encoding.Convert(Encoding.Unicode, gb2312, unicodeBytes);
33 return GetX(Convert.ToInt32(String.Format("{0:D2}", Convert.ToInt16(gb2312Bytes[0]) - 160)
34 + String.Format("{0:D2}", Convert.ToInt16(gb2312Bytes[1]) - 160)));
35 }
36 }
37
38 //根据区位得到首字母
39 private String GetX(int GBCode)
40 {
41 if (GBCode >= 1601 && GBCode < 1637) return "A";
42 if (GBCode >= 1637 && GBCode < 1833) return "B";
43 if (GBCode >= 1833 && GBCode < 2078) return "C";
44 if (GBCode >= 2078 && GBCode < 2274) return "D";
45 if (GBCode >= 2274 && GBCode < 2302) return "E";
46 if (GBCode >= 2302 && GBCode < 2433) return "F";
47 if (GBCode >= 2433 && GBCode < 2594) return "G";
48 if (GBCode >= 2594 && GBCode < 2787) return "H";
49 if (GBCode >= 2787 && GBCode < 3106) return "J";
50 if (GBCode >= 3106 && GBCode < 3212) return "K";
51 if (GBCode >= 3212 && GBCode < 3472) return "L";
52 if (GBCode >= 3472 && GBCode < 3635) return "M";
53 if (GBCode >= 3635 && GBCode < 3722) return "N";
54 if (GBCode >= 3722 && GBCode < 3730) return "O";
55 if (GBCode >= 3730 && GBCode < 3858) return "P";
56 if (GBCode >= 3858 && GBCode < 4027) return "Q";
57 if (GBCode >= 4027 && GBCode < 4086) return "R";
58 if (GBCode >= 4086 && GBCode < 4390) return "S";
59 if (GBCode >= 4390 && GBCode < 4558) return "T";
60 if (GBCode >= 4558 && GBCode < 4684) return "W";
61 if (GBCode >= 4684 && GBCode < 4925) return "X";
62 if (GBCode >= 4925 && GBCode < 5249) return "Y";
63 if (GBCode >= 5249 && GBCode <= 5589) return "Z";
64 if (GBCode >= 5601 && GBCode <= 8794)
65 {
66 String CodeData = "cjwgnspgcenegypbtwxzdxykygtpjnmjqmbsgzscyjsyyfpggbzgydywjkgaljswkbjqhyjwpdzlsgmr"
67 + "ybywwccgznkydgttngjeyekzydcjnmcylqlypyqbqrpzslwbdgkjfyxjwcltbncxjjjjcxdtqsqzycdxxhgckbphffss"
68 + "pybgmxjbbyglbhlssmzmpjhsojnghdzcdklgjhsgqzhxqgkezzwymcscjnyetxadzpmdssmzjjqjyzcjjfwqjbdzbjgd"
69 + "nzcbwhgxhqkmwfbpbqdtjjzkqhylcgxfptyjyyzpsjlfchmqshgmmxsxjpkdcmbbqbefsjwhwwgckpylqbgldlcctnma"
70 + "eddksjngkcsgxlhzaybdbtsdkdylhgymylcxpycjndqjwxqxfyyfjlejbzrwccqhqcsbzkymgplbmcrqcflnymyqmsqt"
71 + "rbcjthztqfrxchxmcjcjlxqgjmshzkbswxemdlckfsydsglycjjssjnqbjctyhbftdcyjdgwyghqfrxwckqkxebpdjpx"
72 + "jqsrmebwgjlbjslyysmdxlclqkxlhtjrjjmbjhxhwywcbhtrxxglhjhfbmgykldyxzpplggpmtcbbajjzyljtyanjgbj"
73 + "flqgdzyqcaxbkclecjsznslyzhlxlzcghbxzhznytdsbcjkdlzayffydlabbgqszkggldndnyskjshdlxxbcghxyggdj"
74 + "mmzngmmccgwzszxsjbznmlzdthcqydbdllscddnlkjyhjsycjlkohqasdhnhcsgaehdaashtcplcpqybsdmpjlpcjaql"
75 + "cdhjjasprchngjnlhlyyqyhwzpnccgwwmzffjqqqqxxaclbhkdjxdgmmydjxzllsygxgkjrywzwyclzmcsjzldbndcfc"
76 + "xyhlschycjqppqagmnyxpfrkssbjlyxyjjglnscmhcwwmnzjjlhmhchsyppttxrycsxbyhcsmxjsxnbwgpxxtaybgajc"
77 + "xlypdccwqocwkccsbnhcpdyznbcyytyckskybsqkkytqqxfcwchcwkelcqbsqyjqcclmthsywhmktlkjlychwheqjhtj"
78 + "hppqpqscfymmcmgbmhglgsllysdllljpchmjhwljcyhzjxhdxjlhxrswlwzjcbxmhzqxsdzpmgfcsglsdymjshxpjxom"
79 + "yqknmyblrthbcftpmgyxlchlhlzylxgsssscclsldclepbhshxyyfhbmgdfycnjqwlqhjjcywjztejjdhfblqxtqkwhd"
80 + "chqxagtlxljxmsljhdzkzjecxjcjnmbbjcsfywkbjzghysdcpqyrsljpclpwxsdwejbjcbcnaytmgmbapclyqbclzxcb"
81 + "nmsggfnzjjbzsfqyndxhpcqkzczwalsbccjxpozgwkybsgxfcfcdkhjbstlqfsgdslqwzkxtmhsbgzhjcrglyjbpmljs"
82 + "xlcjqqhzmjczydjwbmjklddpmjegxyhylxhlqyqhkycwcjmyhxnatjhyccxzpcqlbzwwwtwbqcmlbmynjcccxbbsnzzl"
83 + "jpljxyztzlgcldcklyrzzgqtgjhhgjljaxfgfjzslcfdqzlclgjdjcsnclljpjqdcclcjxmyzftsxgcgsbrzxjqqcczh"
84 + "gyjdjqqlzxjyldlbcyamcstylbdjbyregklzdzhldszchznwczcllwjqjjjkdgjcolbbzppglghtgzcygezmycnqcycy"
85 + "hbhgxkamtxyxnbskyzzgjzlqjdfcjxdygjqjjpmgwgjjjpkjsbgbmmcjssclpqpdxcdyykypcjddyygywchjrtgcnyql"
86 + "dkljczzgzccjgdyksgpzmdlcphnjafyzdjcnmwescsglbtzcgmsdllyxqsxsbljsbbsgghfjlwpmzjnlyywdqshzxtyy"
87 + "whmcyhywdbxbtlmswyyfsbjcbdxxlhjhfpsxzqhfzmqcztqcxzxrdkdjhnnyzqqfnqdmmgnydxmjgdhcdycbffallztd"
88 + "ltfkmxqzdngeqdbdczjdxbzgsqqddjcmbkxffxmkdmcsychzcmljdjynhprsjmkmpcklgdbqtfzswtfgglyplljzhgjj"
89 + "gypzltcsmcnbtjbhfkdhbyzgkpbbymtdlsxsbnpdkleycjnycdykzddhqgsdzsctarlltkzlgecllkjljjaqnbdggghf"
90 + "jtzqjsecshalqfmmgjnlyjbbtmlycxdcjpldlpcqdhsycbzsckbzmsljflhrbjsnbrgjhxpdgdjybzgdlgcsezgxlblg"
91 + "yxtwmabchecmwyjyzlljjshlgndjlslygkdzpzxjyyzlpcxszfgwyydlyhcljscmbjhblyjlycblydpdqysxktbytdkd"
92 + "xjypcnrjmfdjgklccjbctbjddbblblcdqrppxjcglzcshltoljnmdddlngkaqakgjgyhheznmshrphqqjchgmfprxcjg"
93 + "dychghlyrzqlcngjnzsqdkqjymszswlcfqjqxgbggxmdjwlmcrnfkkfsyyljbmqammmycctbshcptxxzzsmphfshmclm"
94 + "ldjfyqxsdyjdjjzzhqpdszglssjbckbxyqzjsgpsxjzqznqtbdkwxjkhhgflbcsmdldgdzdblzkycqnncsybzbfglzzx"
95 + "swmsccmqnjqsbdqsjtxxmbldxcclzshzcxrqjgjylxzfjphymzqqydfqjjlcznzjcdgzygcdxmzysctlkphtxhtlbjxj"
96 + "lxscdqccbbqjfqzfsltjbtkqbsxjjljchczdbzjdczjccprnlqcgpfczlclcxzdmxmphgsgzgszzqjxlwtjpfsyaslcj"
97 + "btckwcwmytcsjjljcqlwzmalbxyfbpnlschtgjwejjxxglljstgshjqlzfkcgnndszfdeqfhbsaqdgylbxmmygszldyd"
98 + "jmjjrgbjgkgdhgkblgkbdmbylxwcxyttybkmrjjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhz";
99 String _gbcode = GBCode.ToString();
100 int pos = (Convert.ToInt16(_gbcode.Substring(0, 2)) - 56) * 94 + Convert.ToInt16(_gbcode.Substring(_gbcode.Length - 2, 2));
101 return CodeData.Substring(pos - 1, 1);
102 }
103 return " ";
104 }
105}
2{
3 private string _string;
4 public CLetter(string IndexTxt)
5 {
6 _string = string.Empty;
7 if (IndexTxt.Length == 0) return;
8 _string = IndexCode(IndexTxt);
9 }
10 public string FirtLetters
11 {
12 get { return _string; }
13 }
14 //返回给定字符串的首字母
15 private String IndexCode(string IndexTxt)
16 {
17 String _Temp = null;
18 for (int i = 0; i < IndexTxt.Length; i++)
19 _Temp = _Temp + GetOneIndex(IndexTxt.Substring(i, 1));
20 return _Temp;
21 }
22
23 //得到单个字符的首字母
24 private String GetOneIndex(String OneIndexTxt)
25 {
26 if (Convert.ToChar(OneIndexTxt) >= 0 && Convert.ToChar(OneIndexTxt) < 256)
27 return OneIndexTxt;
28 else
29 {
30 Encoding gb2312 = Encoding.GetEncoding("gb2312");
31 byte[] unicodeBytes = Encoding.Unicode.GetBytes(OneIndexTxt);
32 byte[] gb2312Bytes = Encoding.Convert(Encoding.Unicode, gb2312, unicodeBytes);
33 return GetX(Convert.ToInt32(String.Format("{0:D2}", Convert.ToInt16(gb2312Bytes[0]) - 160)
34 + String.Format("{0:D2}", Convert.ToInt16(gb2312Bytes[1]) - 160)));
35 }
36 }
37
38 //根据区位得到首字母
39 private String GetX(int GBCode)
40 {
41 if (GBCode >= 1601 && GBCode < 1637) return "A";
42 if (GBCode >= 1637 && GBCode < 1833) return "B";
43 if (GBCode >= 1833 && GBCode < 2078) return "C";
44 if (GBCode >= 2078 && GBCode < 2274) return "D";
45 if (GBCode >= 2274 && GBCode < 2302) return "E";
46 if (GBCode >= 2302 && GBCode < 2433) return "F";
47 if (GBCode >= 2433 && GBCode < 2594) return "G";
48 if (GBCode >= 2594 && GBCode < 2787) return "H";
49 if (GBCode >= 2787 && GBCode < 3106) return "J";
50 if (GBCode >= 3106 && GBCode < 3212) return "K";
51 if (GBCode >= 3212 && GBCode < 3472) return "L";
52 if (GBCode >= 3472 && GBCode < 3635) return "M";
53 if (GBCode >= 3635 && GBCode < 3722) return "N";
54 if (GBCode >= 3722 && GBCode < 3730) return "O";
55 if (GBCode >= 3730 && GBCode < 3858) return "P";
56 if (GBCode >= 3858 && GBCode < 4027) return "Q";
57 if (GBCode >= 4027 && GBCode < 4086) return "R";
58 if (GBCode >= 4086 && GBCode < 4390) return "S";
59 if (GBCode >= 4390 && GBCode < 4558) return "T";
60 if (GBCode >= 4558 && GBCode < 4684) return "W";
61 if (GBCode >= 4684 && GBCode < 4925) return "X";
62 if (GBCode >= 4925 && GBCode < 5249) return "Y";
63 if (GBCode >= 5249 && GBCode <= 5589) return "Z";
64 if (GBCode >= 5601 && GBCode <= 8794)
65 {
66 String CodeData = "cjwgnspgcenegypbtwxzdxykygtpjnmjqmbsgzscyjsyyfpggbzgydywjkgaljswkbjqhyjwpdzlsgmr"
67 + "ybywwccgznkydgttngjeyekzydcjnmcylqlypyqbqrpzslwbdgkjfyxjwcltbncxjjjjcxdtqsqzycdxxhgckbphffss"
68 + "pybgmxjbbyglbhlssmzmpjhsojnghdzcdklgjhsgqzhxqgkezzwymcscjnyetxadzpmdssmzjjqjyzcjjfwqjbdzbjgd"
69 + "nzcbwhgxhqkmwfbpbqdtjjzkqhylcgxfptyjyyzpsjlfchmqshgmmxsxjpkdcmbbqbefsjwhwwgckpylqbgldlcctnma"
70 + "eddksjngkcsgxlhzaybdbtsdkdylhgymylcxpycjndqjwxqxfyyfjlejbzrwccqhqcsbzkymgplbmcrqcflnymyqmsqt"
71 + "rbcjthztqfrxchxmcjcjlxqgjmshzkbswxemdlckfsydsglycjjssjnqbjctyhbftdcyjdgwyghqfrxwckqkxebpdjpx"
72 + "jqsrmebwgjlbjslyysmdxlclqkxlhtjrjjmbjhxhwywcbhtrxxglhjhfbmgykldyxzpplggpmtcbbajjzyljtyanjgbj"
73 + "flqgdzyqcaxbkclecjsznslyzhlxlzcghbxzhznytdsbcjkdlzayffydlabbgqszkggldndnyskjshdlxxbcghxyggdj"
74 + "mmzngmmccgwzszxsjbznmlzdthcqydbdllscddnlkjyhjsycjlkohqasdhnhcsgaehdaashtcplcpqybsdmpjlpcjaql"
75 + "cdhjjasprchngjnlhlyyqyhwzpnccgwwmzffjqqqqxxaclbhkdjxdgmmydjxzllsygxgkjrywzwyclzmcsjzldbndcfc"
76 + "xyhlschycjqppqagmnyxpfrkssbjlyxyjjglnscmhcwwmnzjjlhmhchsyppttxrycsxbyhcsmxjsxnbwgpxxtaybgajc"
77 + "xlypdccwqocwkccsbnhcpdyznbcyytyckskybsqkkytqqxfcwchcwkelcqbsqyjqcclmthsywhmktlkjlychwheqjhtj"
78 + "hppqpqscfymmcmgbmhglgsllysdllljpchmjhwljcyhzjxhdxjlhxrswlwzjcbxmhzqxsdzpmgfcsglsdymjshxpjxom"
79 + "yqknmyblrthbcftpmgyxlchlhlzylxgsssscclsldclepbhshxyyfhbmgdfycnjqwlqhjjcywjztejjdhfblqxtqkwhd"
80 + "chqxagtlxljxmsljhdzkzjecxjcjnmbbjcsfywkbjzghysdcpqyrsljpclpwxsdwejbjcbcnaytmgmbapclyqbclzxcb"
81 + "nmsggfnzjjbzsfqyndxhpcqkzczwalsbccjxpozgwkybsgxfcfcdkhjbstlqfsgdslqwzkxtmhsbgzhjcrglyjbpmljs"
82 + "xlcjqqhzmjczydjwbmjklddpmjegxyhylxhlqyqhkycwcjmyhxnatjhyccxzpcqlbzwwwtwbqcmlbmynjcccxbbsnzzl"
83 + "jpljxyztzlgcldcklyrzzgqtgjhhgjljaxfgfjzslcfdqzlclgjdjcsnclljpjqdcclcjxmyzftsxgcgsbrzxjqqcczh"
84 + "gyjdjqqlzxjyldlbcyamcstylbdjbyregklzdzhldszchznwczcllwjqjjjkdgjcolbbzppglghtgzcygezmycnqcycy"
85 + "hbhgxkamtxyxnbskyzzgjzlqjdfcjxdygjqjjpmgwgjjjpkjsbgbmmcjssclpqpdxcdyykypcjddyygywchjrtgcnyql"
86 + "dkljczzgzccjgdyksgpzmdlcphnjafyzdjcnmwescsglbtzcgmsdllyxqsxsbljsbbsgghfjlwpmzjnlyywdqshzxtyy"
87 + "whmcyhywdbxbtlmswyyfsbjcbdxxlhjhfpsxzqhfzmqcztqcxzxrdkdjhnnyzqqfnqdmmgnydxmjgdhcdycbffallztd"
88 + "ltfkmxqzdngeqdbdczjdxbzgsqqddjcmbkxffxmkdmcsychzcmljdjynhprsjmkmpcklgdbqtfzswtfgglyplljzhgjj"
89 + "gypzltcsmcnbtjbhfkdhbyzgkpbbymtdlsxsbnpdkleycjnycdykzddhqgsdzsctarlltkzlgecllkjljjaqnbdggghf"
90 + "jtzqjsecshalqfmmgjnlyjbbtmlycxdcjpldlpcqdhsycbzsckbzmsljflhrbjsnbrgjhxpdgdjybzgdlgcsezgxlblg"
91 + "yxtwmabchecmwyjyzlljjshlgndjlslygkdzpzxjyyzlpcxszfgwyydlyhcljscmbjhblyjlycblydpdqysxktbytdkd"
92 + "xjypcnrjmfdjgklccjbctbjddbblblcdqrppxjcglzcshltoljnmdddlngkaqakgjgyhheznmshrphqqjchgmfprxcjg"
93 + "dychghlyrzqlcngjnzsqdkqjymszswlcfqjqxgbggxmdjwlmcrnfkkfsyyljbmqammmycctbshcptxxzzsmphfshmclm"
94 + "ldjfyqxsdyjdjjzzhqpdszglssjbckbxyqzjsgpsxjzqznqtbdkwxjkhhgflbcsmdldgdzdblzkycqnncsybzbfglzzx"
95 + "swmsccmqnjqsbdqsjtxxmbldxcclzshzcxrqjgjylxzfjphymzqqydfqjjlcznzjcdgzygcdxmzysctlkphtxhtlbjxj"
96 + "lxscdqccbbqjfqzfsltjbtkqbsxjjljchczdbzjdczjccprnlqcgpfczlclcxzdmxmphgsgzgszzqjxlwtjpfsyaslcj"
97 + "btckwcwmytcsjjljcqlwzmalbxyfbpnlschtgjwejjxxglljstgshjqlzfkcgnndszfdeqfhbsaqdgylbxmmygszldyd"
98 + "jmjjrgbjgkgdhgkblgkbdmbylxwcxyttybkmrjjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhz";
99 String _gbcode = GBCode.ToString();
100 int pos = (Convert.ToInt16(_gbcode.Substring(0, 2)) - 56) * 94 + Convert.ToInt16(_gbcode.Substring(_gbcode.Length - 2, 2));
101 return CodeData.Substring(pos - 1, 1);
102 }
103 return " ";
104 }
105}
使用:
CLetter pLetter = new CLetter(“测试”);
MessageBox.Show(pLetter.FirtLetters);