C#汉字转换拼音码

先看运行结果

直接上代码:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 转换拼音码
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        static 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;
        }

        static public 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;
                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;
        }

        private void Form1_Load(object sender, EventArgs e)
        {


        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(GetChineseSpell(textBox1.Text.Trim()));
        }

        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show(new Class1().GetSpell(textBox1.Text.Trim()));

            
        }
    }
}


//转全拼音
using System;
 using System.Collections;
 using System.Text;
 namespace 转换拼音码
{
    /// <summary>
        /// JJBase 的摘要说明。
        /// </summary>
        /// 汉字转化成拼音
        
        #region 汉字转化成拼音


    public class Class1
    {
                 
         /**//// <summary>
         /// 获得拼音
         /// </summary>
         /// <param name="str_Spell">汉字</param>
         /// <returns></returns>
         //调用格式:GetSpell(string str_Spell)
         //str_Spell是要转换的汉字
         //返回结果是转化成的拼音
         //目前还不完善,例如“爨”字转换不出来,需要进一步完善
         public string GetSpell(string str_Chinese)
         {
 
             try
             {
                Hashtable t = hb();
                 byte[] b = System.Text.Encoding.Default.GetBytes(str_Chinese);
                 int p;
                 StringBuilder ret = new StringBuilder();
                 for(int i = 0; i<b.Length;i++)
                 {
                     p=(int)b[i];
                     if(p>128)//160? or 128? 原文是160,待以后考证
                     {
                         p=p*256+b[++i]-65536;
                         ret.Append(g(t, p));
                     }
                     else
                     {
                         ret.Append((char)p);
                     }
                 }
                 t.Clear();
                 return ret.ToString();
             }
             catch
             {
                 return "";
             }
             
         }
         
         private string g(Hashtable cxc, int num)
         {
             if(num< -20319||num> -10247)
                 return "";
             while(!cxc.ContainsKey(num))
                 num--;
             return cxc[num].ToString();
         }
         private Hashtable hb()
         {
            //尚不晚完善,例如“爨”就没有转换出来
            Hashtable cxc = new Hashtable(); 
             cxc.Add(-20319,"a"); 
             cxc.Add(-20317,"ai");cxc.Add(-20304,"an"); cxc.Add(-20295,"ang"); 
             cxc.Add(-20292,"ao");cxc.Add(-20283,"ba"); cxc.Add(-20265,"bai"); 
             cxc.Add(-20257,"ban");cxc.Add(-20242,"bang"); cxc.Add(-20230,"bao"); 
             cxc.Add(-20051,"bei"); cxc.Add(-20036,"ben"); cxc.Add(-20032,"beng"); 
             cxc.Add(-20026,"bi"); cxc.Add(-20002,"bian"); cxc.Add(-19990,"biao"); 
             cxc.Add(-19986,"bie"); cxc.Add(-19982,"bin"); cxc.Add(-19976,"bing"); 
             cxc.Add(-19805,"bo"); cxc.Add(-19784,"bu"); cxc.Add(-19775,"ca"); 
             cxc.Add(-19774,"cai"); cxc.Add(-19763,"can"); cxc.Add(-19756,"cang"); 
             cxc.Add(-19751,"cao"); cxc.Add(-19746,"ce"); cxc.Add(-19741,"ceng"); 
             cxc.Add(-19739,"cha"); cxc.Add(-19728,"chai"); cxc.Add(-19725,"chan"); 
             cxc.Add(-19715,"chang"); cxc.Add(-19540,"chao"); cxc.Add(-19531,"che"); 
             cxc.Add(-19525,"chen"); cxc.Add(-19515,"cheng"); cxc.Add(-19500,"chi"); 
             cxc.Add(-19484,"chong"); cxc.Add(-19479,"chou"); cxc.Add(-19467,"chu"); 
             cxc.Add(-19289,"chuai"); cxc.Add(-19288,"chuan"); cxc.Add(-19281,"chuang"); 
             cxc.Add(-19275,"chui"); cxc.Add(-19270,"chun"); cxc.Add(-19263,"chuo"); 
             cxc.Add(-19261,"ci"); cxc.Add(-19249,"cong"); cxc.Add(-19243,"cou"); 
             cxc.Add(-19242,"cu"); cxc.Add(-19238,"cuan"); cxc.Add(-19235,"cui"); 
             cxc.Add(-19227,"cun"); cxc.Add(-19224,"cuo"); cxc.Add(-19218,"da"); 
             cxc.Add(-19212,"dai"); cxc.Add(-19038,"dan"); cxc.Add(-19023,"dang"); 
             cxc.Add(-19018,"dao"); cxc.Add(-19006,"de"); cxc.Add(-19003,"deng"); 
             cxc.Add(-18996,"di"); cxc.Add(-18977,"dian"); cxc.Add(-18961,"diao"); 
             cxc.Add(-18952,"die"); cxc.Add(-18783,"ding"); cxc.Add(-18774,"diu"); 
             cxc.Add(-18773,"dong"); cxc.Add(-18763,"dou"); cxc.Add(-18756,"du"); 
             cxc.Add(-18741,"duan"); cxc.Add(-18735,"dui"); cxc.Add(-18731,"dun"); 
             cxc.Add(-18722,"duo"); cxc.Add(-18710,"e"); cxc.Add(-18697,"en"); 
             cxc.Add(-18696,"er"); cxc.Add(-18526,"fa"); cxc.Add(-18518,"fan"); 
             cxc.Add(-18501,"fang"); cxc.Add(-18490,"fei"); cxc.Add(-18478,"fen"); 
             cxc.Add(-18463,"feng"); cxc.Add(-18448,"fo"); cxc.Add(-18447,"fou"); 
             cxc.Add(-18446,"fu"); cxc.Add(-18239,"ga"); cxc.Add(-18237,"gai"); 
             cxc.Add(-18231,"gan"); cxc.Add(-18220,"gang"); cxc.Add(-18211,"gao"); 
            cxc.Add(-18201,"ge"); cxc.Add(-18184,"gei"); cxc.Add(-18183,"gen"); 
            cxc.Add(-18181,"geng"); cxc.Add(-18012,"gong"); cxc.Add(-17997,"gou"); 
            cxc.Add(-17988,"gu"); cxc.Add(-17970,"gua"); cxc.Add(-17964,"guai"); 
            cxc.Add(-17961,"guan"); cxc.Add(-17950,"guang"); cxc.Add(-17947,"gui"); 
            cxc.Add(-17931,"gun"); cxc.Add(-17928,"guo"); cxc.Add(-17922,"ha"); 
            cxc.Add(-17759,"hai"); cxc.Add(-17752,"han"); cxc.Add(-17733,"hang"); 
            cxc.Add(-17730,"hao"); cxc.Add(-17721,"he"); cxc.Add(-17703,"hei"); 
            cxc.Add(-17701,"hen"); cxc.Add(-17697,"heng"); cxc.Add(-17692,"hong"); 
            cxc.Add(-17683,"hou"); cxc.Add(-17676,"hu"); cxc.Add(-17496,"hua"); 
            cxc.Add(-17487,"huai"); cxc.Add(-17482,"huan"); cxc.Add(-17468,"huang"); 
            cxc.Add(-17454,"hui"); cxc.Add(-17433,"hun"); cxc.Add(-17427,"huo"); 
            cxc.Add(-17417,"ji"); cxc.Add(-17202,"jia"); cxc.Add(-17185,"jian"); 
            cxc.Add(-16983,"jiang"); cxc.Add(-16970,"jiao"); cxc.Add(-16942,"jie"); 
            cxc.Add(-16915,"jin"); cxc.Add(-16733,"jing"); cxc.Add(-16708,"jiong"); 
            cxc.Add(-16706,"jiu"); cxc.Add(-16689,"ju"); cxc.Add(-16664,"juan"); 
            cxc.Add(-16657,"jue"); cxc.Add(-16647,"jun"); cxc.Add(-16474,"ka"); 
            cxc.Add(-16470,"kai"); cxc.Add(-16465,"kan"); cxc.Add(-16459,"kang"); 
            cxc.Add(-16452,"kao"); cxc.Add(-16448,"ke"); cxc.Add(-16433,"ken"); 
            cxc.Add(-16429,"keng"); cxc.Add(-16427,"kong"); cxc.Add(-16423,"kou"); 
            cxc.Add(-16419,"ku"); cxc.Add(-16412,"kua"); cxc.Add(-16407,"kuai"); 
            cxc.Add(-16403,"kuan"); cxc.Add(-16401,"kuang"); cxc.Add(-16393,"kui"); 
            cxc.Add(-16220,"kun"); cxc.Add(-16216,"kuo"); cxc.Add(-16212,"la"); 
            cxc.Add(-16205,"lai"); cxc.Add(-16202,"lan"); cxc.Add(-16187,"lang"); 
            cxc.Add(-16180,"lao"); cxc.Add(-16171,"le"); cxc.Add(-16169,"lei"); 
            cxc.Add(-16158,"leng"); cxc.Add(-16155,"li"); cxc.Add(-15959,"lia"); 
            cxc.Add(-15958,"lian"); cxc.Add(-15944,"liang"); cxc.Add(-15933,"liao"); 
            cxc.Add(-15920,"lie"); cxc.Add(-15915,"lin"); cxc.Add(-15903,"ling"); 
            cxc.Add(-15889,"liu"); cxc.Add(-15878,"long"); cxc.Add(-15707,"lou");
            cxc.Add(-15701,"lu");cxc.Add(-15681,"lv");cxc.Add(-15667,"luan");
            cxc.Add(-15661,"lue");cxc.Add(-15659,"lun");cxc.Add(-15652,"luo");
            cxc.Add(-15640,"ma");cxc.Add(-15631,"mai");cxc.Add(-15625,"man");
            cxc.Add(-15454,"mang");cxc.Add(-15448,"mao");cxc.Add(-15436,"me");
            cxc.Add(-15435,"mei");cxc.Add(-15419,"men");cxc.Add(-15416,"meng");
            cxc.Add(-15408,"mi");cxc.Add(-15394,"mian");cxc.Add(-15385,"miao");
            cxc.Add(-15377,"mie");cxc.Add(-15375,"min");cxc.Add(-15369,"ming");
            cxc.Add(-15363,"miu");cxc.Add(-15362,"mo");cxc.Add(-15183,"mou");
            cxc.Add(-15180,"mu");cxc.Add(-15165,"na");cxc.Add(-15158,"nai");
            cxc.Add(-15153,"nan");cxc.Add(-15150,"nang");cxc.Add(-15149,"nao");
            cxc.Add(-15144,"ne");cxc.Add(-15143,"nei");cxc.Add(-15141,"nen");
            cxc.Add(-15140,"neng");cxc.Add(-15139,"ni");cxc.Add(-15128,"nian");
            cxc.Add(-15121,"niang");cxc.Add(-15119,"niao");cxc.Add(-15117,"nie");
            cxc.Add(-15110,"nin");cxc.Add(-15109,"ning");cxc.Add(-14941,"niu");
            cxc.Add(-14937,"nong");cxc.Add(-14933,"nu");cxc.Add(-14930,"nv");
            cxc.Add(-14929,"nuan");cxc.Add(-14928,"nue");cxc.Add(-14926,"nuo");
            cxc.Add(-14922,"o");cxc.Add(-14921,"ou");cxc.Add(-14914,"pa");
            cxc.Add(-14908,"pai");cxc.Add(-14902,"pan");cxc.Add(-14894,"pang");
            cxc.Add(-14889,"pao");cxc.Add(-14882,"pei");cxc.Add(-14873,"pen");
            cxc.Add(-14871,"peng");cxc.Add(-14857,"pi");cxc.Add(-14678,"pian");
            cxc.Add(-14674,"piao");cxc.Add(-14670,"pie");cxc.Add(-14668,"pin");
            cxc.Add(-14663,"ping");cxc.Add(-14654,"po");cxc.Add(-14645,"pu");
            cxc.Add(-14630,"qi");cxc.Add(-14594,"qia");cxc.Add(-14429,"qian");
            cxc.Add(-14407,"qiang");cxc.Add(-14399,"qiao");cxc.Add(-14384,"qie");
            cxc.Add(-14379,"qin");cxc.Add(-14368,"qing");cxc.Add(-14355,"qiong");
            cxc.Add(-14353,"qiu");cxc.Add(-14345,"qu");cxc.Add(-14170,"quan");
            cxc.Add(-14159,"que");cxc.Add(-14151,"qun");cxc.Add(-14149,"ran");
            cxc.Add(-14145,"rang");cxc.Add(-14140,"rao");cxc.Add(-14137,"re");
            cxc.Add(-14135,"ren");cxc.Add(-14125,"reng");cxc.Add(-14123,"ri");
            cxc.Add(-14122,"rong");cxc.Add(-14112,"rou");cxc.Add(-14109,"ru");
            cxc.Add(-14099,"ruan");cxc.Add(-14097,"rui");cxc.Add(-14094,"run");
            cxc.Add(-14092,"ruo");cxc.Add(-14090,"sa");cxc.Add(-14087,"sai");
            cxc.Add(-14083,"san");cxc.Add(-13917,"sang");cxc.Add(-13914,"sao");
            cxc.Add(-13910,"se");cxc.Add(-13907,"sen");cxc.Add(-13906,"seng");
            cxc.Add(-13905,"sha");cxc.Add(-13896,"shai");cxc.Add(-13894,"shan");
            cxc.Add(-13878,"shang");cxc.Add(-13870,"shao");cxc.Add(-13859,"she");
            cxc.Add(-13847,"shen");cxc.Add(-13831,"sheng");cxc.Add(-13658,"shi");
            cxc.Add(-13611,"shou");cxc.Add(-13601,"shu");cxc.Add(-13406,"shua");
            cxc.Add(-13404,"shuai");cxc.Add(-13400,"shuan");cxc.Add(-13398,"shuang");
            cxc.Add(-13395,"shui");cxc.Add(-13391,"shun");cxc.Add(-13387,"shuo");
            cxc.Add(-13383,"si");cxc.Add(-13367,"song");cxc.Add(-13359,"sou");
            cxc.Add(-13356,"su");cxc.Add(-13343,"suan");cxc.Add(-13340,"sui");
            cxc.Add(-13329,"sun");cxc.Add(-13326,"suo");cxc.Add(-13318,"ta");
            cxc.Add(-13147,"tai");cxc.Add(-13138,"tan");cxc.Add(-13120,"tang");
            cxc.Add(-13107,"tao");cxc.Add(-13096,"te");cxc.Add(-13095,"teng");
            cxc.Add(-13091,"ti");cxc.Add(-13076,"tian");cxc.Add(-13068,"tiao");
            cxc.Add(-13063,"tie");cxc.Add(-13060,"ting");cxc.Add(-12888,"tong");
            cxc.Add(-12875,"tou");cxc.Add(-12871,"tu");cxc.Add(-12860,"tuan");
            cxc.Add(-12858,"tui");cxc.Add(-12852,"tun");cxc.Add(-12849,"tuo");
            cxc.Add(-12838,"wa");cxc.Add(-12831,"wai");cxc.Add(-12829,"wan");
            cxc.Add(-12812,"wang");cxc.Add(-12802,"wei");cxc.Add(-12607,"wen");
            cxc.Add(-12597,"weng");cxc.Add(-12594,"wo");cxc.Add(-12585,"wu");
            cxc.Add(-12556,"xi");cxc.Add(-12359,"xia");cxc.Add(-12346,"xian");
            cxc.Add(-12320,"xiang");cxc.Add(-12300,"xiao");cxc.Add(-12120,"xie");
            cxc.Add(-12099,"xin");cxc.Add(-12089,"xing");cxc.Add(-12074,"xiong");
            cxc.Add(-12067,"xiu");cxc.Add(-12058,"xu");cxc.Add(-12039,"xuan");
            cxc.Add(-11867,"xue");cxc.Add(-11861,"xun");cxc.Add(-11847,"ya");
            cxc.Add(-11831,"yan");cxc.Add(-11798,"yang");cxc.Add(-11781,"yao");
            cxc.Add(-11604,"ye");cxc.Add(-11589,"yi");cxc.Add(-11536,"yin");
            cxc.Add(-11358,"ying");cxc.Add(-11340,"yo");cxc.Add(-11339,"yong");
            cxc.Add(-11324,"you");cxc.Add(-11303,"yu");cxc.Add(-11097,"yuan");
            cxc.Add(-11077,"yue");cxc.Add(-11067,"yun");cxc.Add(-11055,"za");
            cxc.Add(-11052,"zai");cxc.Add(-11045,"zan");cxc.Add(-11041,"zang");
            cxc.Add(-11038,"zao");cxc.Add(-11024,"ze");cxc.Add(-11020,"zei");
            cxc.Add(-11019,"zen");cxc.Add(-11018,"zeng");cxc.Add(-11014,"zha");
            cxc.Add(-10838,"zhai");cxc.Add(-10832,"zhan");cxc.Add(-10815,"zhang");
            cxc.Add(-10800,"zhao");cxc.Add(-10790,"zhe");cxc.Add(-10780,"zhen");
            cxc.Add(-10764,"zheng");cxc.Add(-10587,"zhi");cxc.Add(-10544,"zhong");
            cxc.Add(-10533,"zhou");cxc.Add(-10519,"zhu");cxc.Add(-10331,"zhua");
            cxc.Add(-10329,"zhuai");cxc.Add(-10328,"zhuan");cxc.Add(-10322,"zhuang");
            cxc.Add(-10315,"zhui");cxc.Add(-10309,"zhun");cxc.Add(-10307,"zhuo");
            cxc.Add(-10296,"zi");cxc.Add(-10281,"zong");cxc.Add(-10274,"zou");
            cxc.Add(-10270,"zu");cxc.Add(-10262,"zuan");cxc.Add(-10260,"zui");
            cxc.Add(-10256,"zun");cxc.Add(-10254,"zuo");cxc.Add(-10247,"zz");
            return cxc;
        }
    
    }
    # endregion
} 

猜你喜欢

转载自blog.csdn.net/weixin_44068992/article/details/89481491
今日推荐