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         }
View Code

  具体函数如上。

posted on 2016-03-18 11:39  pxhome  阅读(500)  评论(0)    收藏  举报

导航