js 拼音

来源:互联网 发布:插画绘制软件 编辑:程序博客网 时间:2024/04/25 00:39

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>GBK拼音</title>
</head>

<body>
<script>
var key = "吖哎安肮凹八挀扳邦勹陂奔伻皀边灬憋汃冫癶峬嚓偲参仓撡冊嵾噌叉犲辿伥抄车抻阷吃充抽出膗巛刅吹旾踔呲从凑粗汆镩蹿崔邨搓咑呆丹当刀恴揼灯仾嗲敁刁爹丁丟东吺剢耑叾吨多妸奀鞥仒发帆匚飞分丰覅仏垺夫旮侅干冈皋戈给根更工勾估瓜乖关光归丨呙妎咍兯夯茠诃黒拫亨乊叿齁乎花怀欢巟灰昏吙丌加戋江艽阶巾坕冂丩凥姢噘军咔开刊忼尻匼肎劥空廤扝夸蒯宽匡亏坤扩垃来兰啷捞仂雷塄唎俩嫾簗蹽咧厸伶溜咯龙娄噜驴孪掠抡捋嘸妈埋颟牤猫庅呅椚掹踎宀喵乜民名谬摸哞某母拏腉囡囔孬疒娞嫩莻妮拈娘鸟捏脌宁妞农羺奴女疟奻硸噢妑拍眅乓抛呸喷匉丕片剽氕姘乒钋剖仆七掐千呛悄切亲靑宆丘区峑炔夋亽呥穣荛惹人扔日戎厹嶿堧桵闰挼仨毢三桒掻色杀筛山伤弰奢申升尸収书刷衰闩双谁妁厶忪凁苏狻夊孙唆他囼坍汤仐忑膯剔天旫怗厅囲偷凸湍推吞乇屲歪乛尣危塭翁挝乌夕呷仙乡灱些忄兴凶休戌吅疶坃丫咽央幺倻膶一乚应哟佣优扜囦曰蒀帀災兂牂傮啫贼怎曽吒夈沾张佋蜇贞凧之中州朱抓拽专妆隹宒卓仔孖宗邹租劗厜尊昨".split("");

var pinyin = "AAiAnAngAoBaBaiBanBangBaoBeiBenBengBiBianBiaoBieBinBingBoBuCaCaiCanCangCaoCeCenCengChaChaiChanChangChaoCheChenChengChiChongChouChuChuaiChuanChuangChuiChunChuoCiCongCouCuCuanChuanCuanCuiCunCuoDaDaiDanDangDaoDeDenDengDiDiaDianDiaoDieDingDiuDongDouDuDuanDuiDunDuoEEnEngErFaFanFangFeiFenFengFiaoFoFouFuGaGaiGanGangGaoGeGeiGenGengGongGouGuGuaGuaiGuanGuangGuiGunGuoHaHaiHanHangHaoHeHeiHenHengHoHongHouHuHuaHuaiHuanHuangHuiHunHuoJiJiaJianJiangJiaoJieJinJingJiongJiuJuJuanJueJunKaKaiKanKangKaoKeKenKengKongKouKuKuaKuaiKuanKuangKuiKunKuoLaLaiLanLangLaoLeLeiLengLiLiaLianLiangLiaoLieLinLingLiuLoLongLouLuLvLuanLveLunLuoMMaMaiManMangMaoMeMeiMenMengMiMianMiaoMieMinMingMiuMoMouMeiMuNaNaiNanNangNaoNeNeiNenNNiNianNiangNiaoNieNinNingNiuNongNouNuNvNveNuanNuoOuPaPaiPanPangPaoPeiPenPengPiPianPiaoPiePinPingPoPouPuQiQiaQianQiangQiaoQieQinQingQiongQiuQuQuanQueQunRaRanRangRaoReRenRengRiRongRouRuRuanRuiRunRuoSaSaiSanSangSaoSeShaShaiShanShangShaoSheShenShengShiShouShuShuaShuaiShuanShuangShuiShuoSiSongSouSuSuanSuiSunSuoTaTaiTanTangTaoTeTengTiTianTiaoTieTingTongTouTuTuanTuiTunTuoWaWaiWanWangWeiWenWengWoWuXiXiaXianXiangXiaoXieXinXingXiongXiuXuXuanXueXunYaYanYangYaoYeYenYiYinYingYoYongYouYuYuanYueYunZaZaiZanZangZaoZeZeiZenZengZhaZhaiZhanZhangZhaoZheZhenZhengZhiZhongZhouZhuZhuaZhuaiZhuanZhuangZhuiZhunZhuoZaiZiZongZouZuZuanZuiZunZuo".split(/(?=[A-Z])/g);

var cache = {};
var arrTree = [];

/*
 * 函数: Cn2PinYin(w)
 * 注释: w为需转换成拼音的汉字
 */
var Cn2PinYin;

/*
 * 生成一颗条件分支的二叉树
 */
function walk(a,b)
{
 var c = Math.floor((a+b) / 2);

 if(c==b && b<a)   //节点
 {
  arrTree.push("r='", pinyin[c], "';");
  return;
 }

 arrTree.push(   //左分支
  "if(w.localeCompare('", key[c], "')<0)");
 walk(a, c-1, 1);

 arrTree.push("else "); //右分支
 walk(c+1, b, 2);
}

/*
 * 初始化Cn2PinYin函数
 * 对于转化过的汉字做缓存处理
 */
function init()
{
 arrTree.push("var r=cache[w];if(r)return r;");    //检查缓存
 walk(0, key.length-1);        //-递归生成源码
 arrTree.push("return cache[w]=r;");     //-写入缓存

 Cn2PinYin = new Function("w", arrTree.join("")); //编译
}
init();

/*
 * 多个汉字连续转换,不是汉字则保留
 */
function spell(content)
{
 var fn = Cn2PinYin;
 var arr = [];
 var ch;

 for(var i=0,n=content.length; i<n; i++)
 {
  ch = content.charAt(i);
  arr[i] = (ch<"一" || ch>"龥")? //非汉字?
     ch:fn(ch);   //保留:转换
 }

 return arr.join("");
}

/*
 * 测试
 */
var $=function(v){return document.getElementById(v)};
function test()
{
 $('pinyin').value=spell($('content').value);
}
</script>
<textarea id="content" cols="100" rows="10">大家好,这是一个汉字转拼音的小脚本!</textarea>
<textarea id="pinyin"  cols="100" rows="10"></textarea>
<button onclick="test()">汉字转拼音</button>

<script>

</script>
</body>
</html>

原创粉丝点击