C# 获取汉字拼音首字母
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
/// <summary> /// 在指定的字符串列表CnStr中检索符合拼音索引字符串 /// </summary> /// <param name="CnStr">汉字字符串</param> /// <returns>相对应的汉语拼音首字母串</returns> public static string GetSpellCode(string CnStr) { string strTemp=""; int iLen=CnStr.Length; int i=0; for (i=0;i<=iLen-1;i++) { strTemp+=GetCharSpellCode(CnStr.Substring(i,1)); } return strTemp; } /// <summary> /// 得到一个汉字的拼音第一个字母,如果是一个英文字母则直接返回大写字母 /// </summary> /// <param name="CnChar">单个汉字</param> /// <returns>单个大写字母</returns> private static string GetCharSpellCode(string CnChar) { long iCnChar; byte[] ZW = System.Text.Encoding.Default.GetBytes(CnChar); //如果是字母,则直接返回 if (ZW.Length==1) { return CnChar.ToUpper(); } else { // get the array of byte from the single char int i1 = (short)(ZW[0]); int i2 = (short)(ZW[1]); iCnChar = i1*256+i2; } //expresstion //table of the constant list // 'A'; //45217..45252 // 'B'; //45253..45760 // 'C'; //45761..46317 // 'D'; //46318..46825 // 'E'; //46826..47009 // 'F'; //47010..47296 // 'G'; //47297..47613 // 'H'; //47614..48118 // 'J'; //48119..49061 // 'K'; //49062..49323 // 'L'; //49324..49895 // 'M'; //49896..50370 // 'N'; //50371..50613 // 'O'; //50614..50621 // 'P'; //50622..50905 // 'Q'; //50906..51386 // 'R'; //51387..51445 // 'S'; //51446..52217 // 'T'; //52218..52697 //没有U,V // 'W'; //52698..52979 // 'X'; //52980..53640 // 'Y'; //53689..54480 // 'Z'; //54481..55289 // iCnChar match the constant if ((iCnChar>=45217) && (iCnChar<=45252)) { return "A"; } else if ((iCnChar>=45253) && (iCnChar<=45760)) { return "B"; } else if ((iCnChar>=45761) && (iCnChar<=46317)) { return "C"; } else if ((iCnChar>=46318) && (iCnChar<=46825)) { return "D"; } else if ((iCnChar>=46826) && (iCnChar<=47009)) { return "E"; } else if ((iCnChar>=47010) && (iCnChar<=47296)) { return "F"; } else if ((iCnChar>=47297) && (iCnChar<=47613)) { return "G"; } else if ((iCnChar>=47614) && (iCnChar<=48118)) { return "H"; } else if ((iCnChar>=48119) && (iCnChar<=49061)) { return "J"; } else if ((iCnChar>=49062) && (iCnChar<=49323)) { return "K"; } else if ((iCnChar>=49324) && (iCnChar<=49895)) { return "L"; } else if ((iCnChar>=49896) && (iCnChar<=50370)) { return "M"; } else if ((iCnChar>=50371) && (iCnChar<=50613)) { return "N"; } else if ((iCnChar>=50614) && (iCnChar<=50621)) { return "O"; } else if ((iCnChar>=50622) && (iCnChar<=50905)) { return "P"; } else if ((iCnChar>=50906) && (iCnChar<=51386)) { return "Q"; } else if ((iCnChar>=51387) && (iCnChar<=51445)) { return "R"; } else if ((iCnChar>=51446) && (iCnChar<=52217)) { return "S"; } else if ((iCnChar>=52218) && (iCnChar<=52697)) { return "T"; } else if ((iCnChar>=52698) && (iCnChar<=52979)) { return "W"; } else if ((iCnChar>=52980) && (iCnChar<=53640)) { return "X"; } else if ((iCnChar>=53689) && (iCnChar<=54480)) { return "Y"; } else if ((iCnChar>=54481) && (iCnChar<=55289)) { return "Z"; } else return ("?"); } |