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


Posted in Javascript onDecember 22, 2016

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

/**
 * 中文字符串转化为拼音
 * alert(convertToPinyinLower("你好啊"));
 */
function hash(_key,_value)
{
this.key = _key; // 拼音*/
this.value = _value; // ascii码*/
}
// javascript 的自定义对象,用于存放汉字拼音数据字典*/
function dictionary()
{
this.items = [];
this.add = function(_key,_value)
{
this.items[this.items.length] = new hash(_key,_value);
}
}
//汉字拼音的数据字典-共396个-通过组合声母和韵母*/
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("bang",-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("dong",-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("gui",-17947);
d.add("gun",-17931);
d.add("guo",-17928);
d.add("ha",-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("hen",-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("huo",-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("jue",-16657);
d.add("jun",-16647);
d.add("ka",-16474);
d.add("kai",-16470);
d.add("kan",-16465);
d.add("kang",-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("lv",-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",-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",-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("sang",-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("shuang",-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("zan",-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",-10281);
d.add("zou",-10274);
d.add("zu",-10270);
d.add("zuan",-10262);
d.add("zui",-10260);
d.add("zun",-10256);
d.add("zuo",-10254);
//通过查找字典得到与ascii码对应的拼音*/
function getKey(code)
{
if ((code>0)&&(code<160))
  return String.fromCharCode(code);// String.fromCharCode 就是把ascii码转成字符*/
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;
}
//转为小写*/
function convertToPinyinLower(str)
{
var result = "" ;
for (var i=1;i<=str.length;i++)
{
//执行指定语言的脚本代码:
//Mid(str,i,1)-指从str的第i个字符开始取长度为1的字符串
//asc(char)-指获取字符的acsii码
  execScript("ascCode=asc(mid(\"" + str + "\"," + i + ",1))", "vbscript");
  result = result  + getKey(ascCode);
}
return result.toLowerCase();
}
//转为大写*/
function convertToPinyinUpper(str)
{
var result = "" ;
for (var i=1;i<=str.length;i++)
{
//执行指定语言的脚本代码:
//Mid(str,i,1)-指从str的第i个字符开始取长度为1的字符串
//asc(char)-指获取字符的acsii码
  execScript("ascCode=asc(mid(\"" + str + "\"," + i + ",1))", "vbscript");
  result = result  + getKey(ascCode);
 }
return result.toUpperCase();
}
//判断中英文
function isChinese(str){
  var entryVal=str;
  var entryLen=entryVal.length;
  var cnChar=entryVal.match(/[^\x00-\x80]/g);
  if(cnChar!=null&&cnChar.length>0) return true;
  else return false;
}

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

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

Javascript 相关文章推荐
JQuery上传插件Uploadify使用详解及错误处理
Apr 27 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
Apr 05 Javascript
别了 JavaScript中的isXX系列
Aug 01 Javascript
浅析JS中document对象的一些重要属性
Mar 06 Javascript
仿JQuery输写高效JSLite代码的一些技巧
Jan 13 Javascript
jQuery插件fullPage.js实现全屏滚动效果
Dec 02 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
Dec 23 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
Jan 04 Javascript
js代码延迟一定时间后执行一个函数的实例
Feb 15 Javascript
原生JS实现垂直手风琴效果
Feb 19 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
Jul 27 Javascript
Vue实现todo应用的示例
Feb 20 Vue.js
JavaScript实现汉字转换为拼音的库文件示例
Dec 22 #Javascript
基于Javascript倒计时效果
Dec 22 #Javascript
JS前端加密算法示例
Dec 22 #Javascript
jQuery手指滑动轮播效果
Dec 22 #Javascript
自动适应iframe右边的高度
Dec 22 #Javascript
微信小程序 自己制作小组件实例详解
Dec 22 #Javascript
JS正则子匹配实例分析
Dec 22 #Javascript
You might like
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
php创建图像具体步骤
2017/03/13 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
angular.element方法汇总
2015/01/07 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
如何基于python操作excel并获取内容
2019/12/24 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
卡骆驰德国官方网站:Crocs德国
2019/03/29 全球购物
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
升职自我推荐信范文
2015/03/25 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
Python循环之while无限迭代
2022/04/30 Python