C#汉字转拼音功能类加强版

代码属改造而来,没有太深的技术难度,仅仅是排除了原来代码的错误、增加了一些常规需求。目前此类可以实现的功能如下:
1、对中文字符串进行拼音转换的基本功能
2、支持并可自定义拼音单词间的分隔符
3、支持并可自定义是否将拼音单词首字母大写
4、支持并可自定义多音词预定音
5、支持并可自定义转换过程中要排除解析的字符,例如中文标点

输出示例:

引发 System.Web.UI.Control.Init 事件以对页进行初始化
Yin-Fa System.Web.UI.Control.Init Shi-Jian-Yi-Dui-Ye-Jin-Xing-Chu-Shi-Hua

Hello!重庆和深圳的特色各是什么呢?
Hello!Chong Qing He Shen Zhen De Te Se Ge Shi ShenMe Ne ?

代码如下:
/// <summary>
/// 汉字转拼音工具。
/// </summary>

public   sealed   class  CHS2PinYin
{
        
/// <summary>
        
/// 包含字符 ASC 码的整形数组。
        
/// </summary>

        private static int[] pv = new int[] -20319-20317-20304-20295-20292-20283-20265-20257-20242-20230-20051-20036-20032-20026-20002-19990-19986-19982-19976-19805-19784-19775-19774-19763-19756-19751-19746-19741-19739-19728-19725-19715-19540-19531-19525-19515-19500-19484-19479-19467-19289-19288-19281-19275-19270-19263-19261-19249-19243-19242-19238-19235-19227-19224-19218-19212-19038-19023-19018-19006-19003-18996-18977-18961-18952-18783-18774-18773-18763-18756-18741-18735-18731-18722-18710-18697-18696-18526-18518-18501-18490-18478-18463-18448-18447-18446-18239-18237-18231-18220-18211-18201-18184-18183-18181-18012-17997-17988-17970-17964-17961-17950-17947-17931-17928-17922-17759-17752-17733-17730-17721-17703-17701-17697-17692-17683-17676-17496-17487-17482-17468-17454-17433-17427-17417-17202-17185-16983-16970-16942-16915-16733-16708-16706-16689-16664-16657-16647-16474-16470-16465-16459-16452-16448-16433-16429-16427-16423-16419-16412-16407-16403-16401-16393-16220-16216-16212-16205-16202-16187-16180-16171-16169-16158-16155-15959-15958-15944-15933-15920-15915-15903-15889-15878-15707-15701-15681-15667-15661-15659-15652-15640-15631-15625-15454-15448-15436-15435-15419-15416-15408-15394-15385-15377-15375-15369-15363-15362-15183-15180-15165-15158-15153-15150-15149-15144-15143-15141-15140-15139-15128-15121-15119-15117-15110-15109-14941-14937-14933-14930-14929-14928-14926-14922-14921-14914-14908-14902-14894-14889-14882-14873-14871-14857-14678-14674-14670-14668-14663-14654-14645-14630-14594-14429-14407-14399-14384-14379-14368-14355-14353-14345-14170-14159-14151-14149-14145-14140-14137-14135-14125-14123-14122-14112-14109-14099-14097-14094-14092-14090-14087-14083-13917-13914-13910-13907-13906-13905-13896-13894-13878-13870-13859-13847-13831-13658-13611-13601-13406-13404-13400-13398-13395-13391-13387-13383-13367-13359-13356-13343-13340-13329-13326-13318-13147-13138-13120-13107-13096-13095-13091-13076-13068-13063-13060-12888-12875-12871-12860-12858-12852-12849-12838-12831-12829-12812-12802-12607-12597-12594-12585-12556-12359-12346-12320-12300-12120-12099-12089-12074-12067-12058-12039-11867-11861-11847-11831-11798-11781-11604-11589-11536-11358-11340-11339-11324-11303-11097-11077-11067-11055-11052-11045-11041-11038-11024-11020-11019-11018-11014-10838-10832-10815-10800-10790-10780-10764-10587-10544-10533-10519-10331-10329-10328-10322-10315-10309-10307-10296-10281-10274-10270-10262-10260-10256-10254 };

        
/// <summary>
        
/// 包含汉字拼音的字符串数组。
        
/// </summary>

        private static string[] ps = new string[] "a""ai""an""ang""ao""ba""bai""ban""bang""bao""bei""ben""beng""bi""bian""biao""bie""bin""bing""bo""bu""ca""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""dou""du""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>

        private static string[] bd = new string[] """""""""""""""""""""""""""""""""""""""""""""""""""" };

        
private static Hashtable _Phrase;

        
/// <summary>
        
/// 设置或获取包含列外词组读音的键/值对的组合。
        
/// </summary>

        public static Hashtable Phrase
        
{
                
get
                
{
                        
if (_Phrase == null)
                        
{
                                _Phrase 
= new Hashtable();

                                _Phrase.Add(
"重庆""Chong Qing");
                                _Phrase.Add(
"深圳""Shen Zhen");
                                _Phrase.Add(
"什么""Shen Me");
                        }


                        
return _Phrase;
                }


                
set { _Phrase = value; }
        }


        
/// <summary>
        
/// 将指定中文字符串转换为拼音形式。
        
/// </summary>
        
/// <param name="chs">要转换的中文字符串。</param>
        
/// <param name="separator">连接拼音之间的分隔符。</param>
        
/// <param name="initialCap">指定是否将首字母大写。</param>
        
/// <returns>包含中文字符串的拼音的字符串。</returns>

        public static string Convert(string chs, string separator, bool initialCap)
        
{
                
if (chs == null || chs.Length == 0return "";
                
if (separator == null || separator.Length == 0) separator = "";

                
// 例外词组
                foreach (DictionaryEntry de in CHS2PinYin.Phrase)
                
{
                        chs 
= chs.Replace(de.Key.ToString(), String.Format(" {0} ", de.Value.ToString().Replace(" ", separator)));
                }


                
byte[] array = new byte[2];
                
string returnstr = "";
                
int chrasc = 0;
                
int i1 = 0;
                
int i2 = 0;
                
bool b = false;
                
char[] nowchar = chs.ToCharArray();

                CultureInfo ci 
= Thread.CurrentThread.CurrentCulture;
                TextInfo ti 
= ci.TextInfo;

                
for (int j = 0; j < nowchar.Length; j++)
                
{
                        array 
= Encoding.Default.GetBytes(nowchar[j].ToString());
                        
string s = nowchar[j].ToString(); ;

                        
if (array.Length == 1)
                        
{
                                b 
= true;
                                returnstr 
+= s;
                        }

                        
else
                        
{
                                
if (s == "")
                                
{
                                        
if (returnstr == "" || b == true) returnstr += s;
                                        
else returnstr += separator + s;

                                        
continue;
                                }


                                i1 
= (short)(array[0]);
                                i2 
= (short)(array[1]);

                                chrasc 
= i1 * 256 + i2 - 65536;

                                
for (int i = (pv.Length - 1); i >= 0; i--)
                                
{
                                        
if (pv <= chrasc)
                                        
{
                                                s 
= ps;

                                                
if (initialCap == true) s = ti.ToTitleCase(s);

                                                
if (returnstr == "" || b == true) returnstr += s;
                                                
else returnstr += separator + s;

                                                
break;
                                        }

                                }


                                b 
= false;
                        }

                }


                returnstr 
= returnstr.Replace(" ", separator);
                
return returnstr;
        }


        
/// <summary>
        
/// 将指定中文字符串转换为拼音形式。
        
/// </summary>
        
/// <param name="chs">要转换的中文字符串。</param>
        
/// <param name="separator">连接拼音之间的分隔符。</param>
        
/// <returns>包含中文字符串的拼音的字符串。</returns>

        public static string Convert(string chs, string separator)
        
{
                
return CHS2PinYin.Convert(chs, separator, false);
        }


        
/// <summary>
        
/// 将指定中文字符串转换为拼音形式。
        
/// </summary>
        
/// <param name="chs">要转换的中文字符串。</param>
        
/// <param name="initialCap">指定是否将首字母大写。</param>
        
/// <returns>包含中文字符串的拼音的字符串。</returns>

        public static string Convert(string chs, bool initialCap)
        
{
                
return CHS2PinYin.Convert(chs, "", initialCap);
        }


        
/// <summary>
        
/// 将指定中文字符串转换为拼音形式。
        
/// </summary>
        
/// <param name="chs">要转换的中文字符串。</param>
        
/// <returns>包含中文字符串的拼音的字符串。</returns>

        public static string Convert(string chs)
        
{
                
return CHS2PinYin.Convert(chs, "");
        }

}
C#写的 汉字拼音功能超级版 /// <SUMMARY></SUMMARY> /// 包含汉字拼音的字符串数组。 /// private static string[] ps = new string[] { "a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", "bei", "ben", "beng", "bi", "bian", "biao", "bie", "bin", "bing", "bo", "bu", "ca", "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", "dou", "du", "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" }; private static Hashtable _Phrase; #endregion #region 公有方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值