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 form 验证函数 弹出对话框形式
Jun 23 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
Nov 13 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
Sep 06 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
javascript中使用正则表达式清理table样式的代码
Apr 01 Javascript
js实现固定显示区域内自动缩放图片的方法
Jul 18 Javascript
解析利用javascript如何判断一个数为素数
Dec 08 Javascript
JS实现的简单拖拽功能示例
Mar 13 Javascript
es6在react中的应用代码解析
Nov 08 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
Nov 09 Javascript
快速解决brew安装特定版本flow的问题
May 17 Javascript
微信小程序文章详情功能完整实例
Jun 03 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
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
php基础教程 php内置函数实例教程
2012/08/21 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
用javascript作一个通用向导说明
2011/08/30 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
从0开始学Vue
2016/10/27 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
美国性感女装网站:bebe
2017/03/04 全球购物
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
演讲稿的写法
2014/05/19 职场文书
计算机网络专业求职信
2014/06/05 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
个人承诺书格式范文
2015/04/29 职场文书
党员转正介绍人意见
2015/06/03 职场文书
个人工作总结怎么写?
2019/04/09 职场文书