首页 > 代码库 > 汉字转拼音

汉字转拼音

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;public class PinYin{    //定义拼音区编码数组    private static int[] getValue = http://www.mamicode.com/new int[]"A","Ai","An","Ang","Ao","Ba","Bai","Ban","Bang","Bao","Bei","Ben",                "Beng","Bi","Bian","Biao","Bie","Bin","Bing","Bo","Bu","Ba","Cai","Can",                "Cang","Cao","Ce","Ceng","Cha","Chai","Chan","Chang","Chao","Che","Chen","Cheng",                "Chi","Chong","Chou","Chu","Chuai","Chuan","Chuang","Chui","Chun","Chuo","Ci","Cong",                "Cou","Cu","Cuan","Cui","Cun","Cuo","Da","Dai","Dan","Dang","Dao","De",                "Deng","Di","Dian","Diao","Die","Ding","Diu","Dong","Duo","Dou","Duan","Dui",                "Dun","Duo","E","En","Er","Fa","Fan","Fang","Fei","Fen","Feng","Fo",                "Fou","Fu","Ga","Gai","Gan","Gang","Gao","Ge","Gei","Gen","Geng","Gong",                "Gou","Gu","Gua","Guai","Guan","Guang","Gui","Gun","Guo","Ha","Hai","Han",                "Hang","Hao","He","Hei","Hen","Heng","Hong","Hou","Hu","Hua","Huai","Huan",                "Huang","Hui","Hun","Huo","Ji","Jia","Jian","Jiang","Jiao","Jie","Jin","Jing",                "Jiong","Jiu","Ju","Juan","Jue","Jun","Ka","Kai","Kan","Kang","Kao","Ke",                "Ken","Keng","Kong","Kou","Ku","Kua","Kuai","Kuan","Kuang","Kui","Kun","Kuo",                "La","Lai","Lan","Lang","Lao","Le","Lei","Leng","Li","Lia","Lian","Liang",                "Liao","Lie","Lin","Ling","Liu","Long","Lou","Lu","Lv","Luan","Lue","Lun",                "Luo","Ma","Mai","Man","Mang","Mao","Me","Mei","Men","Meng","Mi","Mian",                "Miao","Mie","Min","Ming","Miu","Mo","Mou","Mu","Na","Nai","Nan","Nang",                "Nao","Ne","Nei","Nen","Neng","Ni","Nian","Niang","Niao","Nie","Nin","Ning",                "Niu","Nong","Nu","Nv","Nuan","Nue","Nuo","O","Ou","Pa","Pai","Pan",                "Pang","Pao","Pei","Pen","Peng","Pi","Pian","Piao","Pie","Pin","Ping","Po",                "Pu","Qi","Qia","Qian","Qiang","Qiao","Qie","Qin","Qing","Qiong","Qiu","Qu",                "Quan","Que","Qun","Ran","Rang","Rao","Re","Ren","Reng","Ri","Rong","Rou",                "Ru","Ruan","Rui","Run","Ruo","Sa","Sai","San","Sang","Sao","Se","Sen",                "Seng","Sha","Shai","Shan","Shang","Shao","She","Shen","Sheng","Shi","Shou","Shu",                "Shua","Shuai","Shuan","Shuang","Shui","Shun","Shuo","Si","Song","Sou","Su","Suan",                "Sui","Sun","Suo","Ta","Tai","Tan","Tang","Tao","Te","Teng","Ti","Tian",                "Tiao","Tie","Ting","Tong","Tou","Tu","Tuan","Tui","Tun","Tuo","Wa","Wai",                "Wan","Wang","Wei","Wen","Weng","Wo","Wu","Xi","Xia","Xian","Xiang","Xiao",                "Xie","Xin","Xing","Xiong","Xiu","Xu","Xuan","Xue","Xun","Ya","Yan","Yang",                "Yao","Ye","Yi","Yin","Ying","Yo","Yong","You","Yu","Yuan","Yue","Yun",                "Za", "Zai","Zan","Zang","Zao","Ze","Zei","Zen","Zeng","Zha","Zhai","Zhan",                "Zhang","Zhao","Zhe","Zhen","Zheng","Zhi","Zhong","Zhou","Zhu","Zhua","Zhuai","Zhuan",                "Zhuang","Zhui","Zhun","Zhuo","Zi","Zong","Zou","Zu","Zuan","Zui","Zun","Zuo"           };    /// <summary>    /// 将汉字转换拼音的方法    /// </summary>    /// <param name="str">汉字字符串</param>    /// <returns>拼音字符串</returns>    public string GetABC(string str)    {        Regex reg = new Regex("^[\u4e00-\u9fa5]$");//验证输入是否为汉字        byte[] arr = new byte[2];//定义字节数组        string pystr = "";//定义字符串变量用于返回拼音        char[] mChar = str.ToCharArray();//获取汉字对应的字符数组        return GetStr(mChar,pystr,reg,arr);//返回获取到的汉字拼音    }    private string GetStr(char[] mChar,string pystr,Regex reg,byte[] arr)    {        int asc = 0, M1 = 0, M2 = 0;        for (int j = 0; j < mChar.Length; j++)        {            if (reg.IsMatch(mChar[j].ToString()))//如果输入的是汉字            {                arr = System.Text.Encoding.Default.GetBytes(mChar[j].ToString());                M1 = (short)(arr[0]);                M2 = (short)(arr[1]);                asc = M1 * 256 + M2 - 65536;                if (asc > 0 && asc < 160)                {                    pystr += mChar[j];                }                else                {                    switch (asc)                    {                        case -9254:                            pystr += "Zhen"; break;                        case -8985:                            pystr += "Qian"; break;                        case -5463:                            pystr += "Jia"; break;                        case -8274:                            pystr += "Ge"; break;                        case -5448:                            pystr += "Ga"; break;                        case -5447:                            pystr += "La"; break;                        case -4649:                            pystr += "Chen"; break;                        case -5436:                            pystr += "Mao"; break;                        case -5213:                            pystr += "Mao"; break;                        case -3597:                            pystr += "Die"; break;                        case -5659:                            pystr += "Tian"; break;                        default:                            for (int i = (getValue.Length - 1); i >= 0; i--)                            {                                if (getValue[i] <= asc)//判断汉字的拼音区编码是否在指定范围内                                {                                    pystr += getStr[i];//如果不超出范围则获取对应的拼音                                    break;                                }                            }                            break;                    }                }            }            else//如果不是汉字            {                pystr += mChar[j].ToString();//如果不是汉字则返回            }        }        return pystr;    }}

汉字转拼音