获取字符串中的汉字拼音首字母
(根据http://blog.csdn.net/iwebsms/archive/2004/09/28/119851.aspx修改)
1
public 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
}
public class CLetter2
{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 FirtLetters11
{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
else29
{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);


浙公网安备 33010602011771号