C#取汉字首字母

001 #region 取中文首字母
002 public static string GetFirstLetter(string paramChinese)
003 {
004     string strTemp = "";
005     int iLen = paramChinese.Length;
006     int i = 0;
007  
008     for (i = 0; i <= iLen - 1; i++)
009     {
010         strTemp += GetCharSpellCode(paramChinese.Substring(i, 1));
011     }
012  
013     return strTemp;
014  
015 }
016  
017 /// <summary>
018 /// 得到一个汉字的拼音第一个字母,如果是一个英文字母则直接返回大写字母
019 /// </summary>
020 /// <param name="CnChar">单个汉字</param>
021 /// <returns>单个大写字母</returns>
022 private static string GetCharSpellCode(string paramChar)
023 {
024     long iCnChar;
025  
026     byte[] ZW = System.Text.Encoding.Default.GetBytes(paramChar);
027  
028     //如果是字母,则直接返回
029     if (ZW.Length == 1)
030     {
031         return paramChar.ToUpper();
032     }
033     else
034     {
035         // get the array of byte from the single char
036         int i1 = (short)(ZW[0]);
037         int i2 = (short)(ZW[1]);
038         iCnChar = i1 * 256 + i2;
039     }
040  
041     //expresstion
042     //table of the constant list
043     // 'A'; //45217..45252
044     // 'B'; //45253..45760
045     // 'C'; //45761..46317
046     // 'D'; //46318..46825
047     // 'E'; //46826..47009
048     // 'F'; //47010..47296
049     // 'G'; //47297..47613
050  
051     // 'H'; //47614..48118
052     // 'J'; //48119..49061
053     // 'K'; //49062..49323
054     // 'L'; //49324..49895
055     // 'M'; //49896..50370
056     // 'N'; //50371..50613
057     // 'O'; //50614..50621
058     // 'P'; //50622..50905
059     // 'Q'; //50906..51386
060  
061     // 'R'; //51387..51445
062     // 'S'; //51446..52217
063     // 'T'; //52218..52697
064     //没有U,V
065     // 'W'; //52698..52979
066     // 'X'; //52980..53640
067     // 'Y'; //53689..54480
068     // 'Z'; //54481..55289
069  
070     // iCnChar match the constant
071     if ((iCnChar >= 45217) && (iCnChar <= 45252))
072     {
073         return "A";
074     }
075     else if ((iCnChar >= 45253) && (iCnChar <= 45760))
076     {
077         return "B";
078     }
079     else if ((iCnChar >= 45761) && (iCnChar <= 46317))
080     {
081         return "C";
082     }
083     else if ((iCnChar >= 46318) && (iCnChar <= 46825))
084     {
085         return "D";
086     }
087     else if ((iCnChar >= 46826) && (iCnChar <= 47009))
088     {
089         return "E";
090     }
091     else if ((iCnChar >= 47010) && (iCnChar <= 47296))
092     {
093         return "F";
094     }
095     else if ((iCnChar >= 47297) && (iCnChar <= 47613))
096     {
097         return "G";
098     }
099     else if ((iCnChar >= 47614) && (iCnChar <= 48118))
100     {
101         return "H";
102     }
103     else if ((iCnChar >= 48119) && (iCnChar <= 49061))
104     {
105         return "J";
106     }
107     else if ((iCnChar >= 49062) && (iCnChar <= 49323))
108     {
109         return "K";
110     }
111     else if ((iCnChar >= 49324) && (iCnChar <= 49895))
112     {
113         return "L";
114     }
115     else if ((iCnChar >= 49896) && (iCnChar <= 50370))
116     {
117         return "M";
118     }
119  
120     else if ((iCnChar >= 50371) && (iCnChar <= 50613))
121     {
122         return "N";
123     }
124     else if ((iCnChar >= 50614) && (iCnChar <= 50621))
125     {
126         return "O";
127     }
128     else if ((iCnChar >= 50622) && (iCnChar <= 50905))
129     {
130         return "P";
131     }
132     else if ((iCnChar >= 50906) && (iCnChar <= 51386))
133     {
134         return "Q";
135     }
136     else if ((iCnChar >= 51387) && (iCnChar <= 51445))
137     {
138         return "R";
139     }
140     else if ((iCnChar >= 51446) && (iCnChar <= 52217))
141     {
142         return "S";
143     }
144     else if ((iCnChar >= 52218) && (iCnChar <= 52697))
145     {
146         return "T";
147     }
148     else if ((iCnChar >= 52698) && (iCnChar <= 52979))
149     {
150         return "W";
151     }
152     else if ((iCnChar >= 52980) && (iCnChar <= 53688))
153     {
154         return "X";
155     }
156     else if ((iCnChar >= 53689) && (iCnChar <= 54480))
157     {
158         return "Y";
159     }
160     else if ((iCnChar >= 54481) && (iCnChar <= 55289))
161     {
162         return "Z";
163     }
164     else return ("?");
165 }
166  
167 #endregion

posted @ 2011-07-15 15:32  易独  阅读(299)  评论(0编辑  收藏  举报
乐巴儿 一个有声音的公众号
长按,识别二维码,加关注