当前位置:Gxlcms > JavaScript > JS实现超简单的汉字转拼音功能示例

JS实现超简单的汉字转拼音功能示例

时间:2021-07-01 10:21:17 帮助过:8人阅读

本文实例讲述了JS实现超简单的汉字转拼音功能。分享给大家供大家参考,具体如下:

  1. /**
  2. * 中文字符串转化为拼音
  3. * alert(convertToPinyinLower("你好啊"));
  4. */
  5. function hash(_key,_value)
  6. {
  7. this.key = _key; // 拼音*/
  8. this.value = _value; // ascii码*/
  9. }
  10. // javascript 的自定义对象,用于存放汉字拼音数据字典*/
  11. function dictionary()
  12. {
  13. this.items = [];
  14. this.add = function(_key,_value)
  15. {
  16. this.items[this.items.length] = new hash(_key,_value);
  17. }
  18. }
  19. //汉字拼音的数据字典-共396个-通过组合声母和韵母*/
  20. var d = new dictionary();
  21. d.add("a",-20319);
  22. d.add("ai",-20317);
  23. d.add("an",-20304);
  24. d.add("ang",-20295);
  25. d.add("ao",-20292);
  26. d.add("ba",-20283);
  27. d.add("bai",-20265);
  28. d.add("ban",-20257);
  29. d.add("bang",-20242);
  30. d.add("bao",-20230);
  31. d.add("bei",-20051);
  32. d.add("ben",-20036);
  33. d.add("beng",-20032);
  34. d.add("bi",-20026);
  35. d.add("bian",-20002);
  36. d.add("biao",-19990);
  37. d.add("bie",-19986);
  38. d.add("bin",-19982);
  39. d.add("bing",-19976);
  40. d.add("bo",-19805);
  41. d.add("bu",-19784);
  42. d.add("ca",-19775);
  43. d.add("cai",-19774);
  44. d.add("can",-19763);
  45. d.add("cang",-19756);
  46. d.add("cao",-19751);
  47. d.add("ce",-19746);
  48. d.add("ceng",-19741);
  49. d.add("cha",-19739);
  50. d.add("chai",-19728);
  51. d.add("chan",-19725);
  52. d.add("chang",-19715);
  53. d.add("chao",-19540);
  54. d.add("che",-19531);
  55. d.add("chen",-19525);
  56. d.add("cheng",-19515);
  57. d.add("chi",-19500);
  58. d.add("chong",-19484);
  59. d.add("chou",-19479);
  60. d.add("chu",-19467);
  61. d.add("chuai",-19289);
  62. d.add("chuan",-19288);
  63. d.add("chuang",-19281);
  64. d.add("chui",-19275);
  65. d.add("chun",-19270);
  66. d.add("chuo",-19263);
  67. d.add("ci",-19261);
  68. d.add("cong",-19249);
  69. d.add("cou",-19243);
  70. d.add("cu",-19242);
  71. d.add("cuan",-19238);
  72. d.add("cui",-19235);
  73. d.add("cun",-19227);
  74. d.add("cuo",-19224);
  75. d.add("da",-19218);
  76. d.add("dai",-19212);
  77. d.add("dan",-19038);
  78. d.add("dang",-19023);
  79. d.add("dao",-19018);
  80. d.add("de",-19006);
  81. d.add("deng",-19003);
  82. d.add("di",-18996);
  83. d.add("dian",-18977);
  84. d.add("diao",-18961);
  85. d.add("die",-18952);
  86. d.add("ding",-18783);
  87. d.add("diu",-18774);
  88. d.add("dong",-18773);
  89. d.add("dou",-18763);
  90. d.add("du",-18756);
  91. d.add("duan",-18741);
  92. d.add("dui",-18735);
  93. d.add("dun",-18731);
  94. d.add("duo",-18722);
  95. d.add("e",-18710);
  96. d.add("en",-18697);
  97. d.add("er",-18696);
  98. d.add("fa",-18526);
  99. d.add("fan",-18518);
  100. d.add("fang",-18501);
  101. d.add("fei",-18490);
  102. d.add("fen",-18478);
  103. d.add("feng",-18463);
  104. d.add("fo",-18448);
  105. d.add("fou",-18447);
  106. d.add("fu",-18446);
  107. d.add("ga",-18239);
  108. d.add("gai",-18237);
  109. d.add("gan",-18231);
  110. d.add("gang",-18220);
  111. d.add("gao",-18211);
  112. d.add("ge",-18201);
  113. d.add("gei",-18184);
  114. d.add("gen",-18183);
  115. d.add("geng",-18181);
  116. d.add("gong",-18012);
  117. d.add("gou",-17997);
  118. d.add("gu",-17988);
  119. d.add("gua",-17970);
  120. d.add("guai",-17964);
  121. d.add("guan",-17961);
  122. d.add("guang",-17950);
  123. d.add("gui",-17947);
  124. d.add("gun",-17931);
  125. d.add("guo",-17928);
  126. d.add("ha",-17922);
  127. d.add("hai",-17759);
  128. d.add("han",-17752);
  129. d.add("hang",-17733);
  130. d.add("hao",-17730);
  131. d.add("he",-17721);
  132. d.add("hei",-17703);
  133. d.add("hen",-17701);
  134. d.add("heng",-17697);
  135. d.add("hong",-17692);
  136. d.add("hou",-17683);
  137. d.add("hu",-17676);
  138. d.add("hua",-17496);
  139. d.add("huai",-17487);
  140. d.add("huan",-17482);
  141. d.add("huang",-17468);
  142. d.add("hui",-17454);
  143. d.add("hun",-17433);
  144. d.add("huo",-17427);
  145. d.add("ji",-17417);
  146. d.add("jia",-17202);
  147. d.add("jian",-17185);
  148. d.add("jiang",-16983);
  149. d.add("jiao",-16970);
  150. d.add("jie",-16942);
  151. d.add("jin",-16915);
  152. d.add("jing",-16733);
  153. d.add("jiong",-16708);
  154. d.add("jiu",-16706);
  155. d.add("ju",-16689);
  156. d.add("juan",-16664);
  157. d.add("jue",-16657);
  158. d.add("jun",-16647);
  159. d.add("ka",-16474);
  160. d.add("kai",-16470);
  161. d.add("kan",-16465);
  162. d.add("kang",-16459);
  163. d.add("kao",-16452);
  164. d.add("ke",-16448);
  165. d.add("ken",-16433);
  166. d.add("keng",-16429);
  167. d.add("kong",-16427);
  168. d.add("kou",-16423);
  169. d.add("ku",-16419);
  170. d.add("kua",-16412);
  171. d.add("kuai",-16407);
  172. d.add("kuan",-16403);
  173. d.add("kuang",-16401);
  174. d.add("kui",-16393);
  175. d.add("kun",-16220);
  176. d.add("kuo",-16216);
  177. d.add("la",-16212);
  178. d.add("lai",-16205);
  179. d.add("lan",-16202);
  180. d.add("lang",-16187);
  181. d.add("lao",-16180);
  182. d.add("le",-16171);
  183. d.add("lei",-16169);
  184. d.add("leng",-16158);
  185. d.add("li",-16155);
  186. d.add("lia",-15959);
  187. d.add("lian",-15958);
  188. d.add("liang",-15944);
  189. d.add("liao",-15933);
  190. d.add("lie",-15920);
  191. d.add("lin",-15915);
  192. d.add("ling",-15903);
  193. d.add("liu",-15889);
  194. d.add("long",-15878);
  195. d.add("lou",-15707);
  196. d.add("lu",-15701);
  197. d.add("lv",-15681);
  198. d.add("luan",-15667);
  199. d.add("lue",-15661);
  200. d.add("lun",-15659);
  201. d.add("luo",-15652);
  202. d.add("ma",-15640);
  203. d.add("mai",-15631);
  204. d.add("man",-15625);
  205. d.add("mang",-15454);
  206. d.add("mao",-15448);
  207. d.add("me",-15436);
  208. d.add("mei",-15435);
  209. d.add("men",-15419);
  210. d.add("meng",-15416);
  211. d.add("mi",-15408);
  212. d.add("mian",-15394);
  213. d.add("miao",-15385);
  214. d.add("mie",-15377);
  215. d.add("min",-15375);
  216. d.add("ming",-15369);
  217. d.add("miu",-15363);
  218. d.add("mo",-15362);
  219. d.add("mou",-15183);
  220. d.add("mu",-15180);
  221. d.add("na",-15165);
  222. d.add("nai",-15158);
  223. d.add("nan",-15153);
  224. d.add("nang",-15150);
  225. d.add("nao",-15149);
  226. d.add("ne",-15144);
  227. d.add("nei",-15143);
  228. d.add("nen",-15141);
  229. d.add("neng",-15140);
  230. d.add("ni",-15139);
  231. d.add("nian",-15128);
  232. d.add("niang",-15121);
  233. d.add("niao",-15119);
  234. d.add("nie",-15117);
  235. d.add("nin",-15110);
  236. d.add("ning",-15109);
  237. d.add("niu",-14941);
  238. d.add("nong",-14937);
  239. d.add("nu",-14933);
  240. d.add("nv",-14930);
  241. d.add("nuan",-14929);
  242. d.add("nue",-14928);
  243. d.add("nuo",-14926);
  244. d.add("o",-14922);
  245. d.add("ou",-14921);
  246. d.add("pa",-14914);
  247. d.add("pai",-14908);
  248. d.add("pan",-14902);
  249. d.add("pang",-14894);
  250. d.add("pao",-14889);
  251. d.add("pei",-14882);
  252. d.add("pen",-14873);
  253. d.add("peng",-14871);
  254. d.add("pi",-14857);
  255. d.add("pian",-14678);
  256. d.add("piao",-14674);
  257. d.add("pie",-14670);
  258. d.add("pin",-14668);
  259. d.add("ping",-14663);
  260. d.add("po",-14654);
  261. d.add("pu",-14645);
  262. d.add("qi",-14630);
  263. d.add("qia",-14594);
  264. d.add("qian",-14429);
  265. d.add("qiang",-14407);
  266. d.add("qiao",-14399);
  267. d.add("qie",-14384);
  268. d.add("qin",-14379);
  269. d.add("qing",-14368);
  270. d.add("qiong",-14355);
  271. d.add("qiu",-14353);
  272. d.add("qu",-14345);
  273. d.add("quan",-14170);
  274. d.add("que",-14159);
  275. d.add("qun",-14151);
  276. d.add("ran",-14149);
  277. d.add("rang",-14145);
  278. d.add("rao",-14140);
  279. d.add("re",-14137);
  280. d.add("ren",-14135);
  281. d.add("reng",-14125);
  282. d.add("ri",-14123);
  283. d.add("rong",-14122);
  284. d.add("rou",-14112);
  285. d.add("ru",-14109);
  286. d.add("ruan",-14099);
  287. d.add("rui",-14097);
  288. d.add("run",-14094);
  289. d.add("ruo",-14092);
  290. d.add("sa",-14090);
  291. d.add("sai",-14087);
  292. d.add("san",-14083);
  293. d.add("sang",-13917);
  294. d.add("sao",-13914);
  295. d.add("se",-13910);
  296. d.add("sen",-13907);
  297. d.add("seng",-13906);
  298. d.add("sha",-13905);
  299. d.add("shai",-13896);
  300. d.add("shan",-13894);
  301. d.add("shang",-13878);
  302. d.add("shao",-13870);
  303. d.add("she",-13859);
  304. d.add("shen",-13847);
  305. d.add("sheng",-13831);
  306. d.add("shi",-13658);
  307. d.add("shou",-13611);
  308. d.add("shu",-13601);
  309. d.add("shua",-13406);
  310. d.add("shuai",-13404);
  311. d.add("shuan",-13400);
  312. d.add("shuang",-13398);
  313. d.add("shui",-13395);
  314. d.add("shun",-13391);
  315. d.add("shuo",-13387);
  316. d.add("si",-13383);
  317. d.add("song",-13367);
  318. d.add("sou",-13359);
  319. d.add("su",-13356);
  320. d.add("suan",-13343);
  321. d.add("sui",-13340);
  322. d.add("sun",-13329);
  323. d.add("suo",-13326);
  324. d.add("ta",-13318);
  325. d.add("tai",-13147);
  326. d.add("tan",-13138);
  327. d.add("tang",-13120);
  328. d.add("tao",-13107);
  329. d.add("te",-13096);
  330. d.add("teng",-13095);
  331. d.add("ti",-13091);
  332. d.add("tian",-13076);
  333. d.add("tiao",-13068);
  334. d.add("tie",-13063);
  335. d.add("ting",-13060);
  336. d.add("tong",-12888);
  337. d.add("tou",-12875);
  338. d.add("tu",-12871);
  339. d.add("tuan",-12860);
  340. d.add("tui",-12858);
  341. d.add("tun",-12852);
  342. d.add("tuo",-12849);
  343. d.add("wa",-12838);
  344. d.add("wai",-12831);
  345. d.add("wan",-12829);
  346. d.add("wang",-12812);
  347. d.add("wei",-12802);
  348. d.add("wen",-12607);
  349. d.add("weng",-12597);
  350. d.add("wo",-12594);
  351. d.add("wu",-12585);
  352. d.add("xi",-12556);
  353. d.add("xia",-12359);
  354. d.add("xian",-12346);
  355. d.add("xiang",-12320);
  356. d.add("xiao",-12300);
  357. d.add("xie",-12120);
  358. d.add("xin",-12099);
  359. d.add("xing",-12089);
  360. d.add("xiong",-12074);
  361. d.add("xiu",-12067);
  362. d.add("xu",-12058);
  363. d.add("xuan",-12039);
  364. d.add("xue",-11867);
  365. d.add("xun",-11861);
  366. d.add("ya",-11847);
  367. d.add("yan",-11831);
  368. d.add("yang",-11798);
  369. d.add("yao",-11781);
  370. d.add("ye",-11604);
  371. d.add("yi",-11589);
  372. d.add("yin",-11536);
  373. d.add("ying",-11358);
  374. d.add("yo",-11340);
  375. d.add("yong",-11339);
  376. d.add("you",-11324);
  377. d.add("yu",-11303);
  378. d.add("yuan",-11097);
  379. d.add("yue",-11077);
  380. d.add("yun",-11067);
  381. d.add("za",-11055);
  382. d.add("zai",-11052);
  383. d.add("zan",-11045);
  384. d.add("zang",-11041);
  385. d.add("zao",-11038);
  386. d.add("ze",-11024);
  387. d.add("zei",-11020);
  388. d.add("zen",-11019);
  389. d.add("zeng",-11018);
  390. d.add("zha",-11014);
  391. d.add("zhai",-10838);
  392. d.add("zhan",-10832);
  393. d.add("zhang",-10815);
  394. d.add("zhao",-10800);
  395. d.add("zhe",-10790);
  396. d.add("zhen",-10780);
  397. d.add("zheng",-10764);
  398. d.add("zhi",-10587);
  399. d.add("zhong",-10544);
  400. d.add("zhou",-10533);
  401. d.add("zhu",-10519);
  402. d.add("zhua",-10331);
  403. d.add("zhuai",-10329);
  404. d.add("zhuan",-10328);
  405. d.add("zhuang",-10322);
  406. d.add("zhui",-10315);
  407. d.add("zhun",-10309);
  408. d.add("zhuo",-10307);
  409. d.add("zi",-10296);
  410. d.add("zong",-10281);
  411. d.add("zou",-10274);
  412. d.add("zu",-10270);
  413. d.add("zuan",-10262);
  414. d.add("zui",-10260);
  415. d.add("zun",-10256);
  416. d.add("zuo",-10254);
  417. //通过查找字典得到与ascii码对应的拼音*/
  418. function getKey(code)
  419. {
  420. if ((code>0)&&(code<160))
  421. return String.fromCharCode(code);// String.fromCharCode 就是把ascii码转成字符*/
  422. else if ((code<-20319)||(code>-10247))
  423. return "";
  424. else
  425. for (var i=d.items.length-1;i>=0;i--)
  426. {
  427. if (d.items[i].value<=code)
  428. break;
  429. }
  430. return d.items[i].key;
  431. }
  432. //转为小写*/
  433. function convertToPinyinLower(str)
  434. {
  435. var result = "" ;
  436. for (var i=1;i<=str.length;i++)
  437. {
  438. //执行指定语言的脚本代码:
  439. //Mid(str,i,1)-指从str的第i个字符开始取长度为1的字符串
  440. //asc(char)-指获取字符的acsii码
  441. execScript("ascCode=asc(mid(\"" + str + "\"," + i + ",1))", "vbscript");
  442. result = result + getKey(ascCode);
  443. }
  444. return result.toLowerCase();
  445. }
  446. //转为大写*/
  447. function convertToPinyinUpper(str)
  448. {
  449. var result = "" ;
  450. for (var i=1;i<=str.length;i++)
  451. {
  452. //执行指定语言的脚本代码:
  453. //Mid(str,i,1)-指从str的第i个字符开始取长度为1的字符串
  454. //asc(char)-指获取字符的acsii码
  455. execScript("ascCode=asc(mid(\"" + str + "\"," + i + ",1))", "vbscript");
  456. result = result + getKey(ascCode);
  457. }
  458. return result.toUpperCase();
  459. }
  460. //判断中英文
  461. function isChinese(str){
  462. var entryVal=str;
  463. var entryLen=entryVal.length;
  464. var cnChar=entryVal.match(/[^\x00-\x80]/g);
  465. if(cnChar!=null&&cnChar.length>0) return true;
  466. else return false;
  467. }

将这个文件拷贝下来封装成JS文件,在需要用到的页面添加JS引用,调用convertToPinyinLower就可以了,你可以根据自己的需要来改写这个方法,最近做项目用到,超级简便,分享给大家。

注:对于火狐浏览器execScript("ascCode=asc(mid(\"" + str + "\"," + i + ",1))", "vbscript"); 这块跑不过去的情况,可在TextBox添加onkeypress="ConvertInfo()";

PS:这里再为大家提供几款本站拼音与字母相关工具供大家参考:

在线汉字转换成拼音工具:
http://tools.jb51.net/transcoding/pinyin

在线字母大小写转换工具:
http://tools.jb51.net/transcoding/upper

在线拼音输入法:
http://tools.jb51.net/transcoding/zxpinyin

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript查找算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript传值操作技巧总结》、《javascript编码操作技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

人气教程排行