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 相关文章推荐
一个不错的用JavaScript实现的UBB编码函数
Mar 09 Javascript
10个实用的脚本代码工具
May 04 Javascript
JQuery 应用 JQuery.groupTable.js
Dec 15 Javascript
jQuery图片播放8款精美插件分享
Feb 17 Javascript
Javascript 颜色渐变效果的实现代码
Oct 01 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
Jan 10 Javascript
js delete 用法(删除对象属性及变量)
Aug 24 Javascript
一个获取第n个元素节点的js函数
Sep 02 Javascript
js实现获取焦点后光标在字符串后
Sep 17 Javascript
详解webpack es6 to es5支持配置
May 04 Javascript
Django与Vue语法的冲突问题完美解决方法
Dec 14 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
Nov 01 Javascript
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
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
PHP获取文件后缀名的三个函数
2012/10/15 PHP
php实现将Session写入数据库
2015/07/26 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
Javascript MD4
2006/12/20 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
Django封装交互接口代码
2020/07/12 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
临床医学大学生求职信
2013/09/28 职场文书
高中生学习的自我评价
2013/12/14 职场文书
学生会主席事迹材料
2014/01/28 职场文书
中秋节超市促销方案
2014/01/30 职场文书
小学语文业务学习材料
2014/06/02 职场文书
会计学习心得体会
2014/09/09 职场文书
交通事故调解协议书
2015/05/20 职场文书
归途列车观后感
2015/06/17 职场文书
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server