C#取汉字首字母
view sourceprint?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