# 汉字拼音转换工具。
---
[![NPM version][npm-badge]][npm-url]
[![Build Status][travis-badge]][travis-url]
[![Coverage Status][coveralls-badge]][coveralls-url]
[![Gittip][gittip-image]][gittip-url]
[![NPM downloads][npm-downloads]][npm-url]
[npm-badge]: https://img.shields.io/npm/v/pinyin.svg?style=flat
[npm-url]: https://www.npmjs.com/package/pinyin
[npm-downloads]: http://img.shields.io/npm/dm/pinyin.svg?style=flat
[travis-badge]: https://travis-ci.org/hotoo/pinyin.svg?branch=master
[travis-url]: https://travis-ci.org/hotoo/pinyin
[coveralls-badge]: https://coveralls.io/repos/hotoo/pinyin/badge.svg?branch=master
[coveralls-url]: https://coveralls.io/r/hotoo/pinyin
[gittip-image]: https://img.shields.io/gittip/hotoo.svg?style=flat-square
[gittip-url]: https://www.gittip.com/hotoo/
[English Documention](README-us_EN.md)
转换中文字符为拼音。可以用于汉字注音、排序、检索。
> 注:这个版本同时支持在 Node 和 Web 浏览器环境运行,
>
> Python 版请关注 [mozillazg/python-pinyin](https://github.com/mozillazg/python-pinyin)
---
## 特性
* 根据词组智能匹配最正确的拼音。
* 支持多音字。
* 简单的繁体支持。
* 支持多种不同拼音风格。
## 安装
via npm:
```bash
npm install pinyin
```
## 用法
开发者:
```js
var pinyin = require("pinyin");
console.log(pinyin("中心")); // [ [ 'zhōng' ], [ 'xīn' ] ]
console.log(pinyin("中心", {
heteronym: true // 启用多音字模式
})); // [ [ 'zhōng', 'zhòng' ], [ 'xīn' ] ]
console.log(pinyin("中心", {
heteronym: true, // 启用多音字模式
segment: true // 启用分词,以解决多音字问题。
})); // [ [ 'zhōng' ], [ 'xīn' ] ]
console.log(pinyin("中心", {
style: pinyin.STYLE_INITIALS, // 设置拼音风格
heteronym: true
})); // [ [ 'zh' ], [ 'x' ] ]
```
命令行:
```bash
$ pinyin 中心
zhōng xīn
$ pinyin -h
```
## API
### 方法 `<Array> pinyin(words[, options])`
将传入的中文字符串 (words) 转换成拼音符号串。
options 是可选的,可以设定拼音风格,或打开多音字选项。
返回二维数组,第一维每个数组项位置对应每个中文字符串位置。
第二维是各个汉字的读音列表,多音字会有多个拼音项。
### 方法 `Number pinyin.compare(a, b)`
按拼音排序的默认算法。
## 参数
### `<Boolean> options.segment`
是否启用分词模式,中文分词有助于极大的降低多音字问题。
但性能会极大的下降,内存也会使用更多。
### `<Boolean> options.heteronym`
是否启用多音字模式,默认关闭。
关闭多音字模式时,返回每个汉字第一个匹配的拼音。
启用多音字模式时,返回多音字的所有拼音列表。
### `<Object> options.style`
指定拼音 风格。可以通过以下几种 `STYLE_` 开头的静态属性进行指定。
## 静态属性
### `.STYLE_NORMAL`
普通风格,即不带声调。
如:`pin yin`
### `.STYLE_TONE`
声调风格,拼音声调在韵母第一个字母上。
注:这是默认的风格。
如:`pīn yīn`
### `.STYLE_TONE2`
声调风格 2,即拼音声调以数字形式在各个拼音之后,用数字 [0-4] 进行表示。
如:`pin1 yin1`
### `.STYLE_TO3NE`
声调风格 3,即拼音声调以数字形式在注音字符之后,用数字 [0-4] 进行表示。
如:`pi1n yi1n`
### `.STYLE_INITIALS`
声母风格,只返回各个拼音的声母部分。对于没有声母的汉字,返回空白字符串。
如:`中国` 的拼音 `zh g`
注:声明风格会区分 `zh` 和 `z`,`ch` 和 `c`,`sh` 和 `s`。
注意:部分汉字没有声母,如 `啊`,`饿` 等,另外 `y`, `w`, `yu` 都不是声母,
这些汉字的拼音声母风格会返回 `""`。请仔细考虑你的需求是否应该使用首字母风格。
详情请参考 [为什么没有 y, w, yu 几个声母](#为什么没有 -y-w-yu- 几个声母)
### `.STYLE_FIRST_LETTER`
首字母风格,只返回拼音的首字母部分。
如:`p y`
## Test
```
npm test
```
## Q&A
### 关于 Web 版如何使用
首先,我建议大家应该优先考虑在服务端一次性转换拼音并将结果持久化,避免在客户端每次转换损耗性能和体验。
如果你坚持在客户端使用,你可以考虑使用 [Webpack](http://webpack.github.io/) + [Babel](http://babeljs.io/) 来转换成低端浏览器的可执行代码。
实在不想折腾,可以试试 https://github.com/hotoo/pinyin/tree/gh-pages/dist
### 为什么没有 `y`, `w`, `yu` 几个声母?
声母风格(INITIALS)下,“雨”、“我”、“圆”等汉字返回空字符串,因为根据《汉语拼音方案》,
`y`,`w`,`ü (yu)` 都不是声母,在某些特定韵母无声母时,才加上 `y` 或 `w`,而 `ü` 也有其特定规则。
如果你觉得这个给你带来了麻烦,那么也请小心一些无声母的汉字(如“啊”、“饿”、“按”、“昂”等)。
这时候你也许需要的是首字母风格(FIRST_LETTER)。
### 如何实现按拼音排序?
pinyin 模块提供了默认的排序方案:
```js
const pinyin = require('pinyin');
const data = '我要排序'.split('');
const sortedData = data.sort(pinyin.compare);
```
如果默认的比较方法不能满足你的需求,你可以自定义 pinyinCompare 方法:
```
const pinyin = require('pinyin');
const data = '我要排序'.split('');
// 建议将汉字的拼音持久化存储起来。
const pinyinData = data.map(han => ({
han: han,
pinyin: pinyin(han)[0][0], // 可以自行选择不同的生成拼音方案和风格。
}));
const sortedData = pinyinData.sort((a, b) => {
return a.pinyin.localeCompare(b.pinyin);
}).map(d => d.han);
```
### node 版和 web 版有什么异同?
`pinyin` 目前可以同时运行在 Node 服务器端和 Web 浏览器端。
API 和使用方式完成一致。
但 Web 版较 Node 版稍简单,拼音库只有常用字部分,没有使用分词算法,
并且考虑了网络传输对词库进行了压缩处理。
由于分词和繁体中文的特性,部分情况下的结果也不尽相同。
| 特性 | Web 版 | Node 版 |
|--------------|--------------------------------|----------------------------------|
| 拼音库 | 常用字库。压缩、合并 | 完整字库。不压缩、合并 |
| 分词 | 没有分词 | 使用分词算法,多音字拼音更准确。 |
| 拼音频度排序 | 有根据拼音使用频度优先级排序。 | 同 Web 版。 |
| 繁体中文 | 没有繁体中文支持。 | 有简单的繁简汉字转换。 |
由于这些区别,测试不同运行环境的用例也不尽相同。
## 捐赠
如果这个模块有帮助到您,请 Star 这个仓库。
你也可以选择使用支付宝或微信给我捐赠:
![Alipay:hotoo.cn@gmail.com, WeChat:hotoome](https://hotoo.github.io/images/donate-hotoo.png)
或者直接捐赠给我妻子 [@lizzie](https://github.com/lizzie):
![Alipay:shenyan1985@gmail.com, WeChat:SunsetSunrising](https://hotoo.github.io/images/donate-lizzie.png)
这两种捐赠的最终结果是一样的 :)
## 许可证
[MIT](http://hotoo.mit-license.org/)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
适合学习/练手、毕业设计、课程设计、期末/期中/大作业、工程实训、相关项目/竞赛学习等。 项目具有较高的学习借鉴价值,也可直接拿来修改复现。可以在这些基础上学习借鉴进行修改和扩展,实现其它功能。 可放心下载学习借鉴,你会有所收获。 —— 对于学习和实践,选择合适的项目和资源确实是一种有效的方式。 在进行毕业设计、课程设计或大作业时,选择具备学习借鉴价值的项目可以帮助你理解和应用所学知识,同时也可以通过修改和扩展来实现其他功能。 通过参与实际项目,你可以应用所学的理论知识,深入了解软件开发或其他领域的实践流程和技术要求。 可放心下载学习借鉴,你会有所收获。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
资源推荐
资源详情
资源评论
收起资源包目录
即时通讯(野火IM)系统Web端.zip (2000个子文件)
style.css 40KB
vue-cool-lightbox.min.css 13KB
demo.css 2KB
global.css 1KB
tribute.css 974B
wfc.css 571B
.editorconfig 347B
demo.html 560KB
index.html 586B
phrases-dict.js 1.83MB
dict-zi.js 1.35MB
proto.min.js 1.02MB
ptt.min.js 486KB
engine-conference.min.js 117KB
dict-zi-web.js 95KB
store.js 87KB
wfc.js 77KB
engine-multi.min.js 77KB
engine.min.js 77KB
vue-cool-lightbox.umd.js 65KB
vue-cool-lightbox.esm.js 62KB
vue-cool-lightbox.min.js 36KB
avenginekitproxy.js 31KB
conferenceManager.js 21KB
messageConfig.js 20KB
EmojiAndStickerConfig.js 18KB
config.js 18KB
imageUtil.js 16KB
pttClient.js 13KB
message.js 11KB
emoji.js 10KB
callSessionCallback.js 9KB
favItem.js 8KB
helper.js 7KB
avenginekit.js 7KB
compositeMessageContent.js 7KB
wfc_cli.js 7KB
callSession.js 7KB
appServerApi.js 6KB
localStorageEmitter.js 6KB
pstore.js 6KB
videoProfile.js 6KB
pinyin.js 6KB
organizationServerApi.js 5KB
main.js 5KB
Forward.js 4KB
vue.config.js 4KB
longUtil.js 4KB
conferenceCommandMessageContent.js 4KB
conversationInfo.js 3KB
messageContentType.js 3KB
routers.js 3KB
index.js 3KB
index.js 3KB
addParticipantsMessageContent.js 3KB
platformHelper.js 3KB
articlesMessageContent.js 2KB
groupSetManagerNotificationContent.js 2KB
modifyGroupMemberExtraNotification.js 2KB
PluginCore.js 2KB
recallMessageNotification.js 2KB
focusTrap.js 2KB
callStartMessageContent.js 2KB
modifyGroupAliasNotification.js 2KB
wfcEvent.js 2KB
draft.js 2KB
cardMessageContent.js 2KB
mediaMessageContent.js 2KB
soundMeter.js 2KB
userOnlineState.js 2KB
conferenceInviteMessageContent.js 2KB
LazyLoad.js 2KB
textMessageContent.js 2KB
windowEmitter.js 2KB
allowGroupMemberNotification.js 2KB
muteGroupMemberNotification.js 2KB
groupJoinTypeNotificationContent.js 2KB
parser.test.js 2KB
conferenceApi.js 2KB
addGroupMemberNotification.js 2KB
connectionStatus.js 2KB
kickoffGroupMemberVisiableNotification.js 2KB
kickoffGroupMemberNotification.js 2KB
modifyGroupExtraNotification.js 2KB
index.js 2KB
richNotificationMessageContent.js 2KB
AutoplayObserver.js 2KB
Alert.js 2KB
Picker.js 2KB
callAnswerMessageContent.js 1KB
talkingCallback.js 1KB
Voip.js 1KB
messageContent.js 1KB
groupPrivateChatNotificationContent.js 1KB
quoteInfo.js 1KB
multiCallOngoingMessageContent.js 1KB
transferGroupOwnerNotification.js 1KB
callByeMessageContent.js 1KB
userSettingScope.js 1KB
clipboard.js 1KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
阿齐Archie
- 粉丝: 1w+
- 资源: 2301
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功