Some bugs in JavaScript Chinese to PinYin implementation code

Source: Internet
Author: User

1. Background:
During the project, a small business that displays the customer Department name (pinyin) means that there is a corresponding pinyin under the department name, but there is no corresponding field in the existing database, in addition, the number of departments is relatively large, and it takes a long time to add them. I wonder if it can be implemented in js and processed on the page.
2. Principle description
The program principle is very simple. You can find the data dictionary of Chinese characters and Pinyin on the Internet. However, as we all know that the Chinese characters in GB2312 encoding are sorted by pinyin, as long as you know the Chinese character code headed by pinyin, you can calculate the pinyin code of all Chinese characters.
In this article, you can customize the data dictionary used to store Chinese pinyin and ascii code, convert the Chinese characters to ascii code (two digits), and then search for dictionary matching, for specific implementation, see the code.
3. Implementation Code: Copy codeThe Code is as follows: <script language = "javascript" type = "text/javascript">
Function hash (_ key, _ value)
{
This. key = _ key;/* pinyin */
This. value = _ value;/* ascii code */
}
/* Javascript custom object, used to store Chinese pinyin data dictionary */
Function dictionary ()
{
This. items = [];
This. add = function (_ key, _ value)
{
This. items [this. items. length] = new hash (_ key, _ value );
}
}
/* Data Dictionary of Chinese characters and Pinyin-396 in total-combination of initials and finals */
Var d = new dictionary ();
D. add ("a",-20319 );
D. add ("ai",-20317 );
D. add ("an",-20304 );
D. add ("ang",-20295 );
D. add ("ao",-20292 );
D. add ("ba",-20283 );
D. add ("bai",-20265 );
D. add ("ban",-20257 );
D. add (& quot; bang & quot;,-20242 );
D. add ("bao",-20230 );
D. add ("bei",-20051 );
D. add ("ben",-20036 );
D. add ("beng",-20032 );
D. add ("bi",-20026 );
D. add ("bian",-20002 );
D. add ("biao",-19990 );
D. add ("bie",-19986 );
D. add ("bin",-19982 );
D. add ("bing",-19976 );
D. add ("bo",-19805 );
D. add ("bu",-19784 );
D. add ("ca",-19775 );
D. add ("cai",-19774 );
D. add ("can",-19763 );
D. add ("cang",-19756 );
D. add ("cao",-19751 );
D. add ("ce",-19746 );
D. add ("ceng",-19741 );
D. add ("cha",-19739 );
D. add ("chai",-19728 );
D. add ("chan",-19725 );
D. add ("chang",-19715 );
D. add ("chao",-19540 );
D. add ("che",-19531 );
D. add ("chen",-19525 );
D. add ("cheng",-19515 );
D. add ("chi",-19500 );
D. add ("chong",-19484 );
D. add ("chou",-19479 );
D. add ("chu",-19467 );
D. add ("chuai",-19289 );
D. add ("chuan",-19288 );
D. add ("chuang",-19281 );
D. add ("chui",-19275 );
D. add ("chun",-19270 );
D. add ("chuo",-19263 );
D. add ("ci",-19261 );
D. add ("cong",-19249 );
D. add ("cou",-19243 );
D. add ("cu",-19242 );
D. add ("cuan",-19238 );
D. add ("cui",-19235 );
D. add ("cun",-19227 );
D. add ("cuo",-19224 );
D. add ("da",-19218 );
D. add ("dai",-19212 );
D. add ("dan",-19038 );
D. add ("dang",-19023 );
D. add ("dao",-19018 );
D. add ("de",-19006 );
D. add ("deng",-19003 );
D. add ("di",-18996 );
D. add ("dian",-18977 );
D. add ("diao",-18961 );
D. add ("die",-18952 );
D. add ("ding",-18783 );
D. add ("diu",-18774 );
D. add ("Don G",-18773 );
D. add ("dou",-18763 );
D. add ("du",-18756 );
D. add ("duan",-18741 );
D. add ("dui",-18735 );
D. add ("dun",-18731 );
D. add ("duo",-18722 );
D. add ("e",-18710 );
D. add ("en",-18697 );
D. add ("er",-18696 );
D. add ("fa",-18526 );
D. add ("fan",-18518 );
D. add ("fang",-18501 );
D. add ("fei",-18490 );
D. add ("fen",-18478 );
D. add ("feng",-18463 );
D. add ("fo",-18448 );
D. add ("fou",-18447 );
D. add ("fu",-18446 );
D. add ("ga",-18239 );
D. add ("gai",-18237 );
D. add ("gan",-18231 );
D. add ("gang",-18220 );
D. add ("gao",-18211 );
D. add ("ge",-18201 );
D. add ("gei",-18184 );
D. add ("gen",-18183 );
D. add ("geng",-18181 );
D. add ("gong",-18012 );
D. add ("gou",-17997 );
D. add ("gu",-17988 );
D. add ("gua",-17970 );
D. add ("guai",-17964 );
D. add ("guan",-17961 );
D. add ("guang",-17950 );
D. add (& quot; gui & quot;,-17947 );
D. add ("gun",-17931 );
D. add ("guo",-17928 );
D. add ("Haha",-17922 );
D. add ("hai",-17759 );
D. add ("han",-17752 );
D. add ("hang",-17733 );
D. add ("hao",-17730 );
D. add ("he",-17721 );
D. add ("hei",-17703 );
D. add ("success",-17701 );
D. add ("heng",-17697 );
D. add ("hong",-17692 );
D. add ("hou",-17683 );
D. add ("hu",-17676 );
D. add ("hua",-17496 );
D. add ("huai",-17487 );
D. add ("huan",-17482 );
D. add ("huang",-17468 );
D. add ("hui",-17454 );
D. add ("hun",-17433 );
D. add ("Hu O",-17427 );
D. add ("ji",-17417 );
D. add ("jia",-17202 );
D. add ("jian",-17185 );
D. add ("jiang",-16983 );
D. add ("jiao",-16970 );
D. add ("jie",-16942 );
D. add ("jin",-16915 );
D. add ("jing",-16733 );
D. add ("jiong",-16708 );
D. add ("jiu",-16706 );
D. add ("ju",-16689 );
D. add ("juan",-16664 );
D. add ("maid",-16657 );
D. add ("jun",-16647 );
D. add ("ka",-16474 );
D. add ("kai",-16470 );
D. add ("kan",-16465 );
D. add ("Khang",-16459 );
D. add ("kao",-16452 );
D. add ("ke",-16448 );
D. add ("ken",-16433 );
D. add ("keng",-16429 );
D. add ("kong",-16427 );
D. add ("kou",-16423 );
D. add ("ku",-16419 );
D. add ("kua",-16412 );
D. add ("kuai",-16407 );
D. add ("kuan",-16403 );
D. add ("kuang",-16401 );
D. add ("kui",-16393 );
D. add ("kun",-16220 );
D. add ("kuo",-16216 );
D. add ("la",-16212 );
D. add ("lai",-16205 );
D. add ("lan",-16202 );
D. add ("lang",-16187 );
D. add ("lao",-16180 );
D. add ("le",-16171 );
D. add ("lei",-16169 );
D. add ("leng",-16158 );
D. add ("li",-16155 );
D. add ("lia",-15959 );
D. add ("lian",-15958 );
D. add ("liang",-15944 );
D. add ("liao",-15933 );
D. add ("lie",-15920 );
D. add ("lin",-15915 );
D. add ("ling",-15903 );
D. add ("liu",-15889 );
D. add ("long",-15878 );
D. add ("lou",-15707 );
D. add ("lu",-15701 );
D. add ("PV",-15681 );
D. add ("luan",-15667 );
D. add ("lue",-15661 );
D. add ("lun",-15659 );
D. add ("luo",-15652 );
D. add ("ma",-15640 );
D. add ("mai",-15631 );
D. add ("man",-15625 );
D. add ("mang",-15454 );
D. add ("mao",-15448 );
D. add ("me",-15436 );
D. add ("mei",-15435 );
D. add ("men",-15419 );
D. add ("meng",-15416 );
D. add ("mi",-15408 );
D. add ("mian",-15394 );
D. add ("miao",-15385 );
D. add ("mie",-15377 );
D. add ("min",-15375 );
D. add ("ming",-15369 );
D. add ("miu",-15363 );
D. add ("mo",-15362 );
D. add ("mou",-15183 );
D. add ("mu",-1, 15180 );
D. add ("na",-15165 );
D. add ("nai",-15158 );
D. add ("nan",-15153 );
D. add ("nang",-15150 );
D. add ("nao",-15149 );
D. add ("ne",-15144 );
D. add ("nei",-15143 );
D. add ("nen",-15141 );
D. add ("neng",-15140 );
D. add ("ni",-15139 );
D. add ("nian",-15128 );
D. add ("niang",-15121 );
D. add ("niao",-15119 );
D. add ("nie",-15117 );
D. add ("nin",-15110 );
D. add ("ning",-15109 );
D. add ("niu",-14941 );
D. add ("nong",-14937 );
D. add ("nu",-14933 );
D. add ("nv",-14930 );
D. add ("nuan",-14929 );
D. add ("nue",-14928 );
D. add ("nuo",-14926 );
D. add ("o",-14922 );
D. add ("ou",-14921 );
D. add ("pa",-14914 );
D. add ("pai",-14908 );
D. add ("pan",-14902 );
D. add ("pang",-14894 );
D. add ("pao",-14889 );
D. add ("pei",-14882 );
D. add ("pen",-14873 );
D. add ("peng",-14871 );
D. add ("pi",-14857 );
D. add ("pian",-14678 );
D. add ("piao",-14674 );
D. add ("pie",-14670 );
D. add ("pin",-14668 );
D. add ("ping",-14663 );
D. add ("po",-14654 );
D. add ("pu",-14645 );
D. add ("qi",-14630 );
D. add ("qia",-14594 );
D. add ("qian",-14429 );
D. add ("qiang",-14407 );
D. add ("qiao",-14399 );
D. add ("qie",-14384 );
D. add ("qin",-14379 );
D. add ("qing",-14368 );
D. add ("qiong",-14355 );
D. add ("qiu",-14353 );
D. add ("qu",-14345 );
D. add ("quan",-14170 );
D. add ("que",-14159 );
D. add ("qun",-14151 );
D. add ("ran",-14149 );
D. add ("rang",-14145 );
D. add ("rao",-14140 );
D. add ("re",-14137 );
D. add ("ren",-14135 );
D. add ("reng",-14125 );
D. add ("ri",-14123 );
D. add ("rong",-1, 14122 );
D. add ("rou",-14112 );
D. add ("ru",-14109 );
D. add ("ruan",-14099 );
D. add ("rui",-14097 );
D. add ("run",-14094 );
D. add ("ruo",-14092 );
D. add ("sa",-14090 );
D. add ("sai",-14087 );
D. add ("san",-14083 );
D. add ("Shang",-13917 );
D. add ("sao",-13914 );
D. add ("se",-13910 );
D. add ("sen",-13907 );
D. add ("seng",-13906 );
D. add ("sha",-13905 );
D. add ("shai",-13896 );
D. add ("shan",-13894 );
D. add ("shang",-13878 );
D. add ("shao",-13870 );
D. add ("she",-13859 );
D. add ("shen",-13847 );
D. add ("sheng",-13831 );
D. add ("shi",-13658 );
D. add ("shou",-13611 );
D. add ("shu",-13601 );
D. add ("shua",-13406 );
D. add ("shuai",-13404 );
D. add ("shuan",-13400 );
D. add ("shuffled",-13398 );
D. add ("shui",-13395 );
D. add ("shun",-13391 );
D. add ("shuo",-13387 );
D. add ("si",-13383 );
D. add ("song",-13367 );
D. add ("sou",-13359 );
D. add ("su",-13356 );
D. add ("suan",-13343 );
D. add ("sui",-13340 );
D. add ("sun",-13329 );
D. add ("suo",-13326 );
D. add ("ta",-13318 );
D. add ("tai",-13147 );
D. add ("tan",-13138 );
D. add ("tang",-13120 );
D. add ("tao",-13107 );
D. add ("te",-13096 );
D. add ("teng",-13095 );
D. add ("ti",-13091 );
D. add ("tian",-13076 );
D. add ("tiao",-13068 );
D. add ("tie",-13063 );
D. add ("ting",-13060 );
D. add ("tong",-12888 );
D. add ("tou",-12875 );
D. add ("tu",-12871 );
D. add ("tuan",-12860 );
D. add ("tui",-12858 );
D. add ("tun",-12852 );
D. add ("tuo",-12849 );
D. add ("wa",-12838 );
D. add ("wai",-12831 );
D. add ("wan",-12829 );
D. add ("wang",-12812 );
D. add ("wei",-12802 );
D. add ("wen",-12607 );
D. add ("weng",-12597 );
D. add ("wo",-12594 );
D. add ("wu",-12585 );
D. add ("xi",-12556 );
D. add ("xia",-12359 );
D. add ("xian",-12346 );
D. add ("xiang",-12320 );
D. add ("xiao",-12300 );
D. add ("xie",-12120 );
D. add ("xin",-12099 );
D. add ("xing",-12089 );
D. add ("xiong",-12074 );
D. add ("xiu",-12067 );
D. add ("xu",-12058 );
D. add ("xuan",-12039 );
D. add ("xue",-11867 );
D. add ("xun",-11861 );
D. add ("ya",-11847 );
D. add ("yan",-11831 );
D. add ("yang",-11798 );
D. add ("yao",-11781 );
D. add ("ye",-11604 );
D. add ("yi",-11589 );
D. add ("yin",-11536 );
D. add ("ying",-11358 );
D. add ("yo",-11340 );
D. add ("yong",-11339 );
D. add ("you",-11324 );
D. add ("yu",-11303 );
D. add ("yuan",-11097 );
D. add ("yue",-11077 );
D. add ("yun",-11067 );
D. add ("za",-11055 );
D. add ("zai",-11052 );
D. add ("za",-11045 );
D. add ("zang",-11041 );
D. add ("zao",-11038 );
D. add ("ze",-11024 );
D. add ("zei",-11020 );
D. add ("zen",-11019 );
D. add ("zeng",-11018 );
D. add ("zha",-11014 );
D. add ("zhai",-10838 );
D. add ("zhan",-10832 );
D. add ("zhang",-10815 );
D. add ("zhao",-10800 );
D. add ("zhe",-10790 );
D. add ("zhen",-10780 );
D. add ("zheng",-10764 );
D. add ("zhi",-10587 );
D. add ("zhong",-10544 );
D. add ("zhou",-10533 );
D. add ("zhu",-10519 );
D. add ("zhua",-10331 );
D. add ("zhuai",-10329 );
D. add ("zhuan",-10328 );
D. add ("zhuang",-10322 );
D. add ("zhui",-10315 );
D. add ("zhun",-10309 );
D. add ("zhuo",-10307 );
D. add ("zi",-10296 );
D. add ("zong",-1, 10281 );
D. add ("zou",-10274 );
D. add ("zu",-10270 );
D. add ("zuan",-10262 );
D. add ("z ui",-10260 );
D. add ("zun",-10256 );
D. add ("zuo",-10254 );
/* Obtain the pinyin corresponding to the ascii code by searching the dictionary */
Function getKey (code)
{
If (code> 0) & (code <160 ))
Return String. fromCharCode (code);/* String. fromCharCode converts the ascii code to a character */
Else if (code <-20319) | (code>-10247 ))
Return "";
Else
For (var I = d. items. length-1; I> = 0; I --)
{
If (d. items [I]. value <= code)
Break;
}
Return d. items [I]. key;
}
/* Convert to uppercase */
Function myConvertToLower (str)
{
Var result = "";
For (var I = 1; I <= str. length; I ++)
{
/* Execute the script code in the specified language:
Mid (str, I, 1)-Indicates getting a string with a length of 1 starting from the I character of str
Asc (char)-indicates the acⅱ code for obtaining characters */
ExecScript ("ascCode = asc (mid (\" "+ str +" \ "," + I + ", 1)", "vbscript ");
Result = result + getKey (ascCode );
}
Return result. toLowerCase ();
}
/* Convert to uppercase */
Function myConvertToUpper (str)
{
Var result = "";
For (var I = 1; I <= str. length; I ++)
{
/* Execute the script code in the specified language:
Mid (str, I, 1)-Indicates getting a string with a length of 1 starting from the I character of str
Asc (char)-indicates the acⅱ code for obtaining characters */
ExecScript ("ascCode = asc (mid (\" "+ str +" \ "," + I + ", 1)", "vbscript ");
Result = result + getKey (ascCode );
}
Return result. toUpperCase ();
}
</Script>

Call code:Copy codeThe Code is as follows:/* convert to uppercase */
Onblur = "alert (myConvertToUpper (this. value ));"
/* Convert to lowercase */
Onblur = "alert (myConvertToLower (this. value ));"

Xmlns = "http://www.w3.org/1999/xhtml">

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.