不多说,直接上代码
代码 // 取得汉字首字母 // 只能取得gb2312一级汉字3755个,这段区位码是按拼音排序的。 using System; using System.Text; namespace Test{ public class UpdateAdapter { [STAThread] public static void Main() { UpdateAdapter up = new UpdateAdapter(); Console.WriteLine(up.GetChineseSpell( " 真有这么神奇? " )); Console.ReadLine(); } public string GetChineseSpell( string strText) { int len = strText.Length; string myStr = "" ; for ( int i = 0 ; i < len; i ++ ) { myStr += getSpell(strText.Substring(i, 1 )); } return myStr; } private string getSpell( string cnChar) { byte [] arrCN = Encoding.Default.GetBytes(cnChar); if (arrCN.Length > 1 ) { int area = ( short )arrCN[ 0 ]; int pos = ( short )arrCN[ 1 ]; int code = (area << 8 ) + pos; // {a..z}汉字拼音所在区位表的开始值,另撰文讲述GetBytes(char)所得值与汉字区位码的关系 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 }; for ( int i = 0 ; i < 26 ; i ++ ) { int max = 55290 ; if (i != 25 ) max = areacode[i + 1 ]; if (areacode[i] <= code && code < max) { return Encoding.Default.GetString( new byte [] { ( byte )( 65 + i) }); } } return " * " ; } else return cnChar; } }}
转载于:https://www.cnblogs.com/roogeer/archive/2009/12/03/1616523.html
相关资源:GBK汉字首字母 MYSQL