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如何将汉字转化为拼音的更多相关文章

  1. HTML5 汉字转化为拼音,带读声,穷举多音字

    1,没别的,像这种没有规则的转化,我们首先需要一个字典文件,字典文件的完整度,决定了转化的成功率与精确度 2,笔者收集了较为完整的字典文件,已上传到博客园,欢迎补充  =>  https://b ...

  2. C# 将汉字转化成拼音

    本文来自http://www.cnblogs.com/yazdao/archive/2011/06/04/2072488.html 首先下载Visual Studio International Pa ...

  3. c#把汉字转化成全拼音函数(全拼)

    /// <summary>        /// 把汉字转换成拼音(全拼)        /// </summary>        /// <param name=&q ...

  4. 利用python将表格中的汉字转化为拼音

    缺少包时用pip install 进行安装,例如: pip install xlsxwriter   完成代码如下: #!/usr/bin/python #-*-coding:utf-8-*- #fr ...

  5. JS实现获取汉字首字母拼音、全拼音及混拼音的方法

    本文实例讲述了JS实现获取汉字首字母拼音.全拼音及混拼音的方法.分享给大家供大家参考,具体如下: 这里需要用到一个js获取汉字拼音的插件,可点击此处本站下载. 运行效果如下: 完整示例代码: ? 1 ...

  6. 将汉字转化为拼音的js插件

    /*---------------------------------------------------------------- // 文件名:chinese2pinyin.js // 文件功能描 ...

  7. react下将输入的汉字转化为拼音

    1.首先需要一个简单的拼音和汉字对应的字典文件: /** * 收录常用汉字6763个,不支持声调,支持多音字,并按照汉字使用频率由低到高排序 */ var pinyin_dict_notone = { ...

  8. 将汉字转化为拼音,正则表达式和得到汉字的Unicode编码

    一:上图,不清楚的看代码注解,很详细了 二:具体代码 窗体代码 using System; using System.Collections.Generic; using System.Compone ...

  9. sql标量值函数,将汉字转化为拼音,无音标

    USE [db_Test]GO SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO create function [dbo].[fn_GetPinyin]( ...

随机推荐

  1. java之hibernate之组合主键映射

    1.在应用中经常会有主键是由2个或多个字段组合而成的.比如成绩表: 第一种方式:把主键写为单独的类 2.类的设计:studentId,subjectId ,这两个主键是一个组件.所以可以采用组件映射的 ...

  2. idea下java项目的打包与使用

    一. 打包 (1)打开项目结构,选择Artifacts --> + --> JAR --> From modules with dependencies ... 有main方法就添加 ...

  3. 动画 VUE基础回顾8

    过渡和动画 使用<transition> 组件包裹 例: <transition name="fade"> <div v-if="true& ...

  4. pip笔记(译)

    从PyPI中安装包 >>> pip install SomePackage [...] Successfully installed SomePackage 从PyPI或其他地方安装 ...

  5. 140款Android开源优秀项目源码

    BeautifulRefreshLayout-漂亮的美食下拉刷新 https://github.com/android-cjj/BeautifulRefreshLayout/tree/Beautifu ...

  6. Unity shader error: “Too many texture interpolators would be used for ForwardBase pass”

    Unity shader error: "Too many texture interpolators would be used for ForwardBase pass" 解决 ...

  7. selenium模拟鼠标键盘操作

    简单操作: 1.点击(鼠标左键)页面按钮:click() 2.清空输入框:clear() 3.输入字符串:send_keys()submit提交表单: 1.一般情况可以点击搜索按钮来搜索 2.也可以用 ...

  8. rsa公钥和私钥到底哪个才是用来加密,哪个用来解密?

    本文转自:91博客:原文地址:http://www.9191boke.com/138589019.html 公钥和私钥在一些银行系统.第三方支付系统SDK中经常会遇到,刚接触公钥私钥的朋友们估计很难区 ...

  9. k8s部署etcd集群

    1.k8s部署高可用etcd集群时遇到了一些麻烦,这个是自己其中一个etcd的配置文件 例如: [Unit] Description=Etcd Server After=network.target ...

  10. SQL进阶系列之4HAVING字句的力量

    写在前面 SQL是面向集合的语言,与面向过程和面向对象语言都不一样 寻找缺失的编号 /* 寻找缺失的编号 */ CREATE TABLE SeqTbl (seq INTEGER PRIMARY KEY ...