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 |