asp.net Chinese character conversion Pinyin Implementation Code (C #)

Source: Internet
Author: User

1. Coding is defined first

#region Coding Definition

private static int[] Pyvalue = 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


};

private static string[] Pystr = 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", "the" "," "Hou", "Hu", "Hua", "Huai", "Huan", "Huang", "Hui", "Hun",


"Huo", "Ji", "Jia", "Jian",


"Jiang", "Jiao", "Jie", "Jin", "Jing", "Jiong", "JIU", "Ju", "Juan", "Jue", "June", "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",





#endregion

2. Then is the Pinyin processing method

#region Pinyin Processing

<summary>
Translate a string of Chinese into pinyin
If a given character is a non-Chinese character, the conversion is not performed and the original character is returned directly;
</summary>
<param name= "CHSSTR" > designated Chinese characters </param>
<returns> Pinyin Code </returns>
public string Chsstring2spell (string chsstr)
{
String strret = String. Empty;

char[] Arrchar = chsstr. ToCharArray ();

foreach (char c in Arrchar)
{
Strret + + Singlechs2spell (c.tostring ());
}

return strret;
}
<summary>
Translate a string of Chinese into pinyin
</summary>
<param name= "CHSSTR" > designated Chinese characters </param>
<returns> Pinyin First Letter </returns>
public string Getheadofchs (string chsstr)
{
String strret = String. Empty;

char[] Arrchar = chsstr. ToCharArray ();

foreach (char c in Arrchar)
{
Strret + + getheadofsinglechs (c.tostring ());
}

return strret;
}

<summary>
Conversion of single Chinese characters into pinyin
</summary>
<param name= "Singlechs" > single Chinese characters </param>
<returns> Pinyin </returns>
public string Singlechs2spell (string singlechs)
{
Byte[] Array;
int IASC;
String Strrtn = String. Empty;

Array = Encoding.Default.GetBytes (Singlechs);

Try
{
IASC = (short) (array[0]) * 256 + (short) (array[1])-65536;
}
Catch
{
IASC = 1;
}

if (IAsc > 0 && iAsc < 160)
return singlechs;

            for (int i = (pyvalue). LENGTH-1); I >= 0; i--)
            {
                 if (Pyvalue[i] <= iAsc)
                 {
                     strrtn = Pystr[i];
                     break;
               }
           }

Capitalize the first letter
if (Strrtn.length > 1)
{
Strrtn = strrtn.substring (0, 1). ToUpper () + strrtn.substring (1);
}

return STRRTN;
}

<summary>
Get the first letter of a single Chinese pinyin
</summary>
<returns> </returns>
public string Getheadofsinglechs (string singlechs)
{
Return Singlechs2spell (Singlechs). Substring (0, 1);
}
#endregion

Method Two

Using System;


Using System.Collections.Generic;


Using System.Text;





Namespace Stringoption


{


public class Getstringspell


{


&lt;summary&gt;


Extract the first letter of Chinese characters


&lt;/summary&gt;


&lt;param name= "StrText" &gt; need to convert the word &lt;/param&gt;


&lt;returns&gt; Conversion Results &lt;/returns&gt;


public static string Getchinesespell (String strText)


{


int len = strtext.length;


String mystr = "";


for (int i = 0; i &lt; len; i++)


{


MyStr + + Getspell (strtext.substring (i, 1));


}


return mystr;


}


&lt;summary&gt;


Turn the extracted letters into uppercase


&lt;/summary&gt;


&lt;param name= "StrText" &gt; the string to be converted &lt;/param&gt;


&lt;returns&gt; Conversion Results &lt;/returns&gt;


public static string Getlowerchinesespell (String strText)


{


Return Getchinesespell (StrText). ToLower ();


}


&lt;summary&gt;


Turn the extracted letters into uppercase


&lt;/summary&gt;


&lt;param name= "MyChar" &gt; the string to be converted &lt;/param&gt;


&lt;returns&gt; Conversion Results &lt;/returns&gt;


public static string Getupperchinesespell (String strText)


{


Return Getchinesespell (StrText). ToUpper ();


}


&lt;summary&gt;


Get the first pinyin of a single Chinese character


&lt;/summary&gt;


&lt;param name= "MyChar" &gt; characters to convert &lt;/param&gt;


&lt;returns&gt; Conversion Results &lt;/returns&gt;


public static string Getspell (String MyChar)


{


byte[] Arrcn = System.Text.Encoding.Default.GetBytes (MyChar);


if (Arrcn.length &gt; 1)


{


int area = (short) arrcn[0];


int pos = (short) arrcn[1];


int code = (Area &lt;&lt; 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 &lt; i++)


{


int max = 55290;


if (i!=) max = areacode[i + 1];


if (Areacode[i] &lt;= code &amp;&amp; code &lt; MAX)


{


Return System.Text.Encoding.Default.GetString (New byte[] {(byte) (+ i)});


}


}


Return "_";


}


else return MyChar;


}


}


}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.