频道栏目
首页 > 资讯 > C# > 正文

C#获得汉字拼音首字幕以及全拼(不支持繁体)

10-07-11        来源:[db:作者]  
收藏   我要投稿

public class ChineseCode
    {
        protected string _CnTxt;
        protected string _EnTxt;

        ///
        /// 要获取字母的汉字
        ///
        public string CnTxt
        {
            get { return _CnTxt; }
            set { _CnTxt = value; }
        }
        ///
        /// 汉字的首字母
        ///
        public string EnTxt
        {
            get { return _EnTxt; }
            set { _EnTxt = value; }
        }
        ///
        /// 构造方法
        ///
        public ChineseCode()
        {

        }
        ///
        /// 构造方法,获取汉字首字母拼音
        ///
        ///
        public ChineseCode(string txt)
        {
            _CnTxt = txt;
            _EnTxt = IndexCode(_CnTxt);
        }
       
        /// <summary>
        /// 获取汉字的首字母
        /// </summary>
        /// <param name="IndexTxt">汉字</param>
        /// <returns>汉字的首字母</returns>
        public String IndexCode(String IndexTxt)
        {
            String _Temp = null;
            for (int i = 0; i < IndexTxt.Length; i++)
                _Temp = _Temp + GetOneIndex(IndexTxt.Substring(i, 1));
            return _Temp;
        }

        /// <summary>
        /// 单个汉字
        /// </summary>
        /// <param name="OneIndexTxt">汉字</param>
        /// <returns>首拼</returns>
        private String GetOneIndex(String OneIndexTxt)
        {
            if (Convert.ToChar(OneIndexTxt) >= 0 && Convert.ToChar(OneIndexTxt) < 256)
                return OneIndexTxt;
            else
            {
                Encoding gb2312 = Encoding.GetEncoding("gb2312");
                byte[] unicodeBytes = Encoding.Unicode.GetBytes(OneIndexTxt);
                byte[] gb2312Bytes = Encoding.Convert(Encoding.Unicode, gb2312, unicodeBytes);
                return GetX(Convert.ToInt32(
                 String.Format("{0:D2}", Convert.ToInt16(gb2312Bytes[0]) - 160)
                 + String.Format("{0:D2}", Convert.ToInt16(gb2312Bytes[1]) - 160)
                 ));
            }
        }

        /// <summary>
        /// 根据区位得到首字母
        /// </summary>
        /// <param name="GBCode">区位</param>
        /// <returns>首字母</returns>
        private String GetX(int GBCode)
        {
            if (GBCode >= 1601 && GBCode < 1637) return "A";
            if (GBCode >= 1637 && GBCode < 1833) return "B";
            if (GBCode >= 1833 && GBCode < 2078) return "C";
            if (GBCode >= 2078 && GBCode < 2274) return "D";
            if (GBCode >= 2274 && GBCode < 2302) return "E";
            if (GBCode >= 2302 && GBCode < 2433) return "F";
            if (GBCode >= 2433 && GBCode < 2594) return "G";
            if (GBCode >= 2594 && GBCode < 2787) return "H";
            if (GBCode >= 2787 && GBCode < 3106) return "J";
            if (GBCode >= 3106 && GBCode < 3212) return "K";
            if (GBCode >= 3212 && GBCode < 3472) return "L";
            if (GBCode >= 3472 && GBCode < 3635) return "M";
            if

相关TAG标签
上一篇:使用工厂方法模式实现多数据库WinForm手机号码查询器(附源码)
下一篇:C#遍历排序的方法
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站