js如何将汉字转化为拼音
github地址,上面有封装好的转换工具:https://github.com/sxei/pinyinjs
里面有几个库,根据功能,库的文件大小也不一样,可以根据需求去引入使用。
里面封装好了方法:
/**
* 获取汉字的拼音首字母
* @param str 汉字字符串,如果遇到非汉字则原样返回
* @param polyphone 是否支持多音字,默认false,如果为true,会返回所有可能的组合数组
*/
pinyinUtil.getFirstLetter(str, polyphone);
/**
* 根据汉字获取拼音,如果不是汉字直接返回原字符
* @param str 要转换的汉字
* @param splitter 分隔字符,默认用空格分隔
* @param withtone 返回结果是否包含声调,默认是
* @param polyphone 是否支持多音字,默认否
*/
pinyinUtil.getPinyin(str, splitter, withtone, polyphone);
/**
* 拼音转汉字,只支持单个汉字,返回所有匹配的汉字组合
* @param pinyin 单个汉字的拼音,不能包含声调
*/
pinyinUtil.getHanzi(pinyin);
下面分别针对不同场合如何使用作介绍。
如果你只需要获取拼音首字母
<script type="text/javascript" src="pinyin_dict_firstletter.js"></script>
<script type="text/javascript" src="pinyinUtil.js"></script> <script type="text/javascript">
pinyinUtil.getFirstLetter('小茗同学'); // 输出 XMTX
pinyinUtil.getFirstLetter('大中国', true); // 输出 ['DZG', 'TZG']
</script>
需要特别说明的是,如果你引入的是其它2个字典文件,也同样可以获取拼音首字母的,只是说用这个字典文件更适合。
如果拼音不需要声调
<script type="text/javascript" src="pinyin_dict_notone.js"></script>
<script type="text/javascript" src="pinyinUtil.js"></script> <script type="text/javascript">
pinyinUtil.getPinyin('小茗同学'); // 输出 'xiao ming tong xue'
pinyinUtil.getHanzi('ming'); // 输出 '明名命鸣铭冥茗溟酩瞑螟暝'
</script>
如果需要声调或者需要处理生僻字
<script type="text/javascript" src="pinyin_dict_withtone.js"></script>
<script type="text/javascript" src="pinyinUtil.js"></script> <script type="text/javascript">
pinyinUtil.getPinyin('小茗同学'); // 输出 'xiǎo míng tóng xué'
pinyinUtil.getPinyin('小茗同学', '-', true, true); // 输出 ['xiǎo-míng-tóng-xué', 'xiǎo-míng-tòng-xué']
</script>
如果需要精准识别多音字
由于词典文件较大,本示例不推荐在web环境下使用:
<script type="text/javascript" src="dict/pinyin_dict_withtone.js"></script>
<script type="text/javascript" src="dict/pinyin_dict_polyphone.js"></script>
<script type="text/javascript" src="pinyinUtil.js"></script> <script type="text/javascript">
pinyinUtil.getPinyin('长城和长大', ' ', true, true); // 输出:cháng chéng hé zhǎng dà
pinyinUtil.getPinyin('喝水和喝彩', ' ', true, true); // 输出:hē shuǐ hé hè cǎi
pinyinUtil.getPinyin('伟大的大夫', ' ', true, true); // 输出:wěi dà de dài fū
</script>
关于简单拼音输入法
一个正式的输入法需要考虑的东西太多太多,比如词库、用户个人输入习惯等,这里只是实现一个最简单的输入法,没有任何词库(虽然加上也可以,但是web环境不适合引入太大的文件)。
推荐使用第二个字典文件pinyin_dict_noletter.js
,虽然字典三字数更多,但是不能按照汉字使用频率排序,一些生僻字反而在前面。
<link rel="stylesheet" type="text/css" href="simple-input-method/simple-input-method.css">
<input type="text" class="test-input-method"/>
<script type="text/javascript" src="pinyin_dict_noletter.js"></script>
<script type="text/javascript" src="pinyinUtil.js"></script>
<script type="text/javascript" src="simple-input-method/simple-input-method.js"></script>
<script type="text/javascript">
SimpleInputMethod.init('.test-input-method');
</script>
----------------------------
以下是做了个小实验,加入有一个人名数组,可能有汉语名称,也可能有英文名称,
想把这个人名数组按照,首字母顺序排序,并且将首字母相同的放在以26个小写英语字母命名的数组中,最后合并在一个大数组中:
var arr=["暗暗","冯大大","巴巴","妹妹","中国","tom","bob","alis","A","安安"];
var changeArr=[];
arr.forEach(item=>{
var obj={name:"",pinyin:""};
obj.name=item;
obj.pinyin=pinyinUtil.getFirstLetter(item);
changeArr.push(obj);
});
console.log(changeArr);
changeArr.sort(function(a,b){
return a.pinyin.localeCompare(b.pinyin,"zh");
}); var splitNameArr=[];
var a=[],b=[],c=[],d=[],e=[],f=[],g=[],h=[],i=[],j=[],k=[],l=[],m=[],n=[],
o=[],p=[],q=[],r=[],s=[],t=[],u=[],v=[],w=[],x=[],y=[],z=[];
changeArr.forEach(item=>{
var firstPinYin=item.pinyin.charAt(0);
console.log(firstPinYin);
switch(firstPinYin){
case "a":
case "A" :
a.push(item);
break;
case "b":
case "B" :
b.push(item);
break;
case "c":
case "C" :
c.push(item);
break;
case "d":
case "D" :
d.push(item);
break;
case "e":
case "E" :
e.push(item);
break;
case "f":
case "F" :
f.push(item);
break;
case "g":
case "G" :
g.push(item);
break;
case "h":
case "H" :
h.push(item);
break;
case "i":
case "I" :
i.push(item);
break;
case "j":
case "G" :
j.push(item);
break;
case "k":
case "K" :
k.push(item);
break;
case "l":
case "L" :
l.push(item);
break;
case "m":
case "M" :
m.push(item);
break;
case "n":
case "N" :
n.push(item);
break;
case "o":
case "O" :
o.push(item);
break;
case "p":
case "P" :
p.push(item);
break;
case "q":
case "Q" :
q.push(item);
break;
case "r":
case "R" :
r.push(item);
break;
case "s":
case "S" :
s.push(item);
break;
case "t":
case "T" :
t.push(item);
break;
case "u":
case "U" :
u.push(item);
break;
case "v":
case "V" :
v.push(item);
break;
case "w":
case "W" :
w.push(item);
break;
case "x":
case "X" :
x.push(item);
break;
case "y":
case "Y" :
y.push(item);
break;
case "z":
case "Z" :
z.push(item);
break;
default:
break;
}
});
console.log(a)
splitNameArr.push(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z);
console.log(splitNameArr);
完
js如何将汉字转化为拼音的更多相关文章
- HTML5 汉字转化为拼音,带读声,穷举多音字
1,没别的,像这种没有规则的转化,我们首先需要一个字典文件,字典文件的完整度,决定了转化的成功率与精确度 2,笔者收集了较为完整的字典文件,已上传到博客园,欢迎补充 => https://b ...
- C# 将汉字转化成拼音
本文来自http://www.cnblogs.com/yazdao/archive/2011/06/04/2072488.html 首先下载Visual Studio International Pa ...
- c#把汉字转化成全拼音函数(全拼)
/// <summary> /// 把汉字转换成拼音(全拼) /// </summary> /// <param name=&q ...
- 利用python将表格中的汉字转化为拼音
缺少包时用pip install 进行安装,例如: pip install xlsxwriter 完成代码如下: #!/usr/bin/python #-*-coding:utf-8-*- #fr ...
- JS实现获取汉字首字母拼音、全拼音及混拼音的方法
本文实例讲述了JS实现获取汉字首字母拼音.全拼音及混拼音的方法.分享给大家供大家参考,具体如下: 这里需要用到一个js获取汉字拼音的插件,可点击此处本站下载. 运行效果如下: 完整示例代码: ? 1 ...
- 将汉字转化为拼音的js插件
/*---------------------------------------------------------------- // 文件名:chinese2pinyin.js // 文件功能描 ...
- react下将输入的汉字转化为拼音
1.首先需要一个简单的拼音和汉字对应的字典文件: /** * 收录常用汉字6763个,不支持声调,支持多音字,并按照汉字使用频率由低到高排序 */ var pinyin_dict_notone = { ...
- 将汉字转化为拼音,正则表达式和得到汉字的Unicode编码
一:上图,不清楚的看代码注解,很详细了 二:具体代码 窗体代码 using System; using System.Collections.Generic; using System.Compone ...
- sql标量值函数,将汉字转化为拼音,无音标
USE [db_Test]GO SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO create function [dbo].[fn_GetPinyin]( ...
随机推荐
- 2019 易车java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.易车等公司offer,岗位是Java后端开发,最终选择去了易车. 面试了很多家公司,感觉大部分公司考察的点都差不多 ...
- Python基础知识(三)
Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...
- JAVA案例练习: 去除ArrayList中重复的字符串(字符串内容相同),去除重复的对象
package com.yqw.list; import java.util.ArrayList;import java.util.Iterator; public class Demo_ArrayL ...
- weblogic unable to get file lock问题
非正常结束weblogic进程导致weblogic无法启动 由于先前服务器直接down掉了,所有进程都非正常的进行关闭了,也就导致了下次启动weblogic的时候报了以下错误: <2012-3- ...
- tomcat 安装记录 centos7 开放对外端口
//端口查询 [root@CentOS7 bin]# firewall-cmd --query-port=9090/tcp no //添加端口 [root@CentOS7 bin]# firewall ...
- Cannot assign to read only property 'exports' of object '#<Object>' ,文件名大小写问题!!!
有些坑不知道怎么就掉进去,可能一辈子都爬不起来!!! 一.错误描述 昨天还好好的,今天早上来从git获取了一下别人提交的代码就出错了!而提交代码的人 运行一点错误都没有!!! cya@KQ-101 M ...
- sqliteman install parameter
.安装前准备 系统要求:linux Qt库版本:一般都有 .安装文件 官网自行下载 .安装 )这里用的pscp pscp .\sqliteman-.tar.gz root@192.168.30.140 ...
- 如何在Jenkins中使用日期参数(变量)
一.首先需要安装插件:Date Parameter Plugin 二.安装完成后,在项目中添加参数,我这里只有日期,时间的话没试过,应该也可以把 三.用${date}调用参数即可 最后邮件的附件正常~
- Kotlin属性委托系统总结与提供委托详解
属性委托总结回顾: 在前三次已经将Kotlin委托相关的知识点进行了完整的学习了,具体博文如下: https://www.cnblogs.com/webor2006/p/11369019.html h ...
- iptables 通用语句
iptables -t filter -nvL --line-number | grep destination -t : 指定表 {fillter|nat|mangle|raw} -v : 显示详 ...