C#获取汉字拼音首字母
获取汉字拼音首字符。
1 private void textBox1_TextChanged(object sender, EventArgs e) 2 { 3 int len = textBox1.Text.Length; 4 string myStr = ""; 5 for (int i = 0; i < len; i++) 6 { 7 myStr += getSpell(textBox1.Text.Substring(i, 1)); 8 //getSpell(textBox1.Text.Substring(i, 1)).ToLower();得到小写字母 9 //getSpell(textBox1.Text.Substring(i, 1)).ToUpper();得到大写字母 10 } 11 label1.Text = myStr; 12 }
拖入一个txtBox和label控件,每个字符单独处理。getSpell(textBox1.Text.Substring(i, 1))函数,可以转换为大小写。
1 /// <summary> 2 /// 获取单个汉字的首拼音 3 /// </summary> 4 /// <param name="myChar">需要转换的字符</param> 5 /// <returns>转换结果</returns> 6 public static string getSpell(string myChar) 7 { 8 byte[] arrCN = Encoding.Default.GetBytes(myChar); 9 if (arrCN.Length > 1) 10 { 11 int area = (short)arrCN[0]; 12 int pos = (short)arrCN[1]; 13 int code = (area << 8) + pos; 14 int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 }; 15 for (int i = 0; i < 26; i++) 16 { 17 int max = 55290; 18 if (i != 25) max = areacode[i + 1]; 19 if (areacode[i] <= code && code < max) 20 { 21 return Encoding.Default.GetString(new byte[] { (byte)(65 + i) }); 22 } 23 } 24 return "_"; 25 } 26 else return myChar; 27 }
具体函数如上。
浙公网安备 33010602011771号