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">