把汉字转换成拼音(全拼) - 挖沙啦代码库【1】

今天开始慢慢的吧挖沙啦的开发经验给大家分享,哈哈,很高兴的向大家推荐了。如有不才的地方,还请大家多多指点

把汉字转换成拼音(全拼) - 挖沙啦代码库【1】

比如说以下标题,使用的就是URL中文转拼音的技术,很简单,给大家一点点的讲解

中俄商讨新战机合同 欲重启加油机项目

http://www.washala.com/Info_23409_ZhongEShangTaoXinZhanJiHeTong-YuZhongQiJiaYouJiXiangMu.html

其中 汉字部分转成拼音为 :  ZhongEShangTaoXinZhanJiHeTong-YuZhongQiJiaYouJiXiangMu

中间的空格,或者很怪异的符号,我们统一转换成  -   横杠

首先定义拼音的枚举方式

 

拼音枚举的定义

 

这里是将中文匹配成拼音的方法

        /// <summary>
        /// 把汉字转换成拼音(全拼)
        /// </summary>
        /// <param name="hzString">汉字字符串</param>
        /// <param name="IsFiltrate">是否过滤多余的</param>
        /// <returns>转换后的拼音(全拼)字符串</returns>
        public static string Convert(string hzString, bool IsFiltrate)
        {
            // 匹配中文字符
            Regex regex = new Regex("^[\u4e00-\u9fa5]$");
            byte[] array = new byte[2];
            StringBuilder pyString = new StringBuilder();
            int chrAsc = 0;
            int i1 = 0;
            int i2 = 0;
            char[] noWChar = hzString.ToCharArray();

            for (int j = 0; j < noWChar.Length; j++)
            {
                // 中文字符
                if (regex.IsMatch(noWChar[j].ToString()))
                {
                    array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString());
                    i1 = (short)(array[0]);
                    i2 = (short)(array[1]);
                    chrAsc = i1 * 256 + i2 - 65536;
                    if (chrAsc > 0 && chrAsc < 160)
                    {
                        pyString.Append( noWChar[j] );
                    }
                    else
                    {
                        // 修正部分文字
                        if (chrAsc == -9254)  // 修正“圳”字
                            pyString.Append(  "Zhen");
                        else
                        {
                            for (int i = (pyValue.Length - 1); i >= 0; i--)
                            {
                                if (pyValue[i] <= chrAsc)
                                {
                                   pyString.Append(  pyName[i]);
                                    break;
                                }
                            }
                        }
                    }
                }
                // 非中文字符
                else
                {
                    if (IsFiltrate == true)
                    {
                        //过滤掉非英文非数字的字符
                        Regex filtrateRegex = new Regex("^[A-Za-z0-9]+$");
                        if (filtrateRegex.IsMatch(noWChar[j].ToString()))
                        {
                            pyString.Append(noWChar[j].ToString());
                        }
                        else
                        {
                            pyString.Append("-");
                        }
                    }
                    else
                    {

                        pyString.Append(noWChar[j].ToString());
                    }
                }
            }
            return pyString.ToString();
        }

 

这里可以做个比较简单的方法来调用

        #region "将汉字转换拼音,去除掉特殊字符"
        /// <summary>
        /// 将汉字转换拼音,去除掉特殊字符
        /// </summary>
        /// <param name="HzString">要转换的字符串</param>
        /// <returns>拼音</returns>
        public static string ToPinyin(string HzString)
        {
            return Pinyin.Convert(HzString,true);
        }
        /// <summary>
        /// 将汉字转换拼音,去除掉特殊字符
        /// </summary>
        /// <param name="HzString">要转换的字符串</param>
        /// <param name="FontLength">要输出的字符长度</param>
        /// <returns>拼音</returns>
        public static string ToPinyin(string HzString,int FontLength)
        {
            if (HzString.Length > FontLength)
            {
                return Pinyin.Convert(HzString.Substring(0, FontLength - 1), true);
            }
            else
            {
                return Pinyin.Convert(HzString, true);
            }

           
        }
        #endregion

 写得比较简单,后台编辑器在数据多的时候 IE8就很卡。没办法给大家写太多的东西,下次我会用别的浏览器打开后台写的
附上源码,请笑纳,改改就能用了,呵呵
Code DownLoad:https://files.cnblogs.com/sxally/中文转拼音.rar

posted @ 2008-12-11 13:22  痞子再再  阅读(1052)  评论(2编辑  收藏  举报
挖沙啦