更新记录
0.0.1(2025-02-23)
- init
平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 4.52,Android:4.4,iOS:9,HarmonyNext:不确定 | × | √ | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 | 鸿蒙元服务 |
---|---|---|---|---|
× | × | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | × | × | × | × |
lime-pinyin 汉字转拼音
全端通用的中文转拼音 UTS 库,轻量高效
安装
插件市场导入,引入页面后,(app)自定义基座再使用
代码演示
拼音
通过 options.type
参数设置,可以获得数组和字符串不同的返回格式,也可以通过 options.toneType
参数控制音调在拼音中的显示格式
import { pinyin, type CompleteOptions } from '@/uni_modules/lime-pinyin'
// 获取带音调拼音
pinyin('汉语拼音'); // 'hàn yǔ pīn yīn'
// 获取不带声调的拼音
pinyin('汉语拼音', { toneType: 'none' } as CompleteOptions); // 'han yu pin yin'
// 获取声调转换为数字后缀的拼音
pinyin('汉语拼音', { toneType: 'num' } as CompleteOptions); // 'han4 yu3 pin1 yin1'
// 获取数组形式带音调拼音
pinyin('汉语拼音', { type: 'array' } as CompleteOptions); // ["hàn", "yǔ", "pīn", "yīn"]
// 获取数组形式不带声调的拼音
pinyin('汉语拼音', { toneType: 'none', type: 'array' } as CompleteOptions); // ["han", "yu", "pin", "yin"]
// 获取数组形式声调转换为数字后缀的拼音
pinyin('汉语拼音', { toneType: 'num', type: 'array' } as CompleteOptions); // ["han4", "yu3", "pin1", "yin1"]
声母
设置 options.pattern
为 initial
时,返回的结果将为拼音的声母。
import { pinyin, type CompleteOptions } from '@/uni_modules/lime-pinyin'
// 获取声母
pinyin('汉语拼音', { pattern: 'initial' } as CompleteOptions); // 'h y p y'
// 获取数组形式声母
pinyin('汉语拼音', { pattern: 'initial', type: 'array' } as CompleteOptions); // ["h", "y", "p", "y"]
韵母
设置 options.pattern
为 final
时,返回的结果将为拼音的声母。
import { pinyin, type CompleteOptions } from '@/uni_modules/lime-pinyin'
// 获取带音调韵母
pinyin('汉语拼音', { pattern: 'final' } as CompleteOptions); // 'àn ǔ īn īn'
// 获取不带音调韵母
pinyin('汉语拼音', { pattern: 'final', toneType: 'none' } as CompleteOptions); // 'an u in in'
// 获取音调为数字的韵母
pinyin('汉语拼音', { pattern: 'final', toneType: 'num' } as CompleteOptions); // 'an4 u3 in1 in1'
// 获取数组形式带音调韵母
pinyin('汉语拼音', { pattern: 'final', type: 'array' } as CompleteOptions); // ["àn", "ǔ", "īn", "īn"]
// 获取数组形式不带音调韵母
pinyin('汉语拼音', { pattern: 'final', toneType: 'none', type: 'array' } as CompleteOptions); // ["an", "u", "in", "in"]
// 获取数组形式音调为数字的韵母
pinyin('汉语拼音', { pattern: 'final', toneType: 'num', type: 'array' } as CompleteOptions); // ['an4', 'u3', 'in1', 'in1']
韵头(介音)/韵腹/韵尾
设置 options.pattern
为 finalHead/finalBody/finalTail
时,返回的结果将为拼音的韵头/韵腹/韵尾。
import { pinyin, type CompleteOptions } from '@/uni_modules/lime-pinyin'
// 返回韵头
pinyin('村庄', { pattern: 'finalHead', type: 'array' } as CompleteOptions); // [ '', 'u' ]
// 返回韵腹
pinyin('村庄', { pattern: 'finalBody', type: 'array' } as CompleteOptions); // [ 'ū', 'ā' ]
// 返回韵尾
pinyin('村庄', { pattern: 'finalTail', type: 'array' } as CompleteOptions); // [ 'n', 'ng' ]
音调
设置 options.pattern
为 num
时,返回的结果将为拼音的音调对应的数字。
import { pinyin, type CompleteOptions } from '@/uni_modules/lime-pinyin'
// 获取音调
pinyin('汉语拼音', { pattern: 'num' } as CompleteOptions); // '4 3 1 1'
// 获取数组形式音调
pinyin('汉语拼音', { pattern: 'num', type: 'array' } as CompleteOptions); // ["4", "3", "1", "1"]
首字母
设置 options.pattern
为 first
时,返回的结果将为拼音的音调对应的数字。
import { pinyin, type CompleteOptions } from '@/uni_modules/lime-pinyin'
// 获取拼音首字母
pinyin('赵钱孙李额', { pattern: 'first' } as CompleteOptions); // 'z q s l é'
// 获取不带音调拼音首字母
pinyin('赵钱孙李额', { pattern: 'first', toneType: 'none' } as CompleteOptions); // 'z q s l e'
// 获取数组形式拼音首字母
pinyin('赵钱孙李额', { pattern: 'first', type: 'array' } as CompleteOptions); // ['z', 'q', 's', 'l', 'é']
// 获取数组形式不带音调拼音首字母
pinyin('赵钱孙李额', { pattern: 'first', toneType: 'none', type: 'array' } as CompleteOptions); // ['z', 'q', 's', 'l', 'e']
完整内容
设置 options.type
为 all
时,返回的结果将为拼音的全部内容的数组。
import { pinyin, type CompleteOptions } from '@/uni_modules/lime-pinyin'
const result = pinyin('汉语拼音', { type: 'all' });
多音字
设置 options.multiple
为 true
时,可以获取多音字的所有拼音。
import { pinyin, type CompleteOptions } from '@/uni_modules/lime-pinyin'
// 获取多音
pinyin('好', { multiple: true } as CompleteOptions); // 'hǎo hào'
// 获取数组形式多音
pinyin('好', { multiple: true, type: 'array' } as CompleteOptions); // ["hǎo", "hào"]
// text 不为单个字符时 multiple 不生效
pinyin('好学', { multiple: true } as CompleteOptions); // hào xué
姓氏模式
设置 options.surname
为 head
(只识别字符串开头的姓氏字符) 或者 all
(识别字符串全部的姓氏字符) 可以开启姓氏模式,匹配到百家姓中的姓氏相关的字符将优先输出姓氏拼音。
import { pinyin, type CompleteOptions } from '@/uni_modules/lime-pinyin'
// 不开启姓氏模式
pinyin('我叫曾乐乐'); // 'wǒ jiào céng lè lè'
// 开启 head 姓氏模式
pinyin('我叫曾乐乐', { surname: 'head' } as CompleteOptions); // 'wǒ jiào zēng lè lè'
// 开启 all 姓氏模式(会将“乐”也识别为乐毅的yuè姓氏)
pinyin('我叫曾乐乐', { surname: 'all' } as CompleteOptions); // 'wǒ jiào zēng yuè yuè'
自定义词汇
插件内置了一些高频常用词的词典,想要保证高准确率,需要应用更完备的词典,可以通过 addDict
添加词典。
可以使用pinyin-pro
官方提供的词典,但是数据包比较大,不建议直接放在项目里加载。特别是uniappx app端。会直接崩溃。
npm install @pinyin-pro/data
yarn add @pinyin-pro/data
pnpm add @pinyin-pro/data
import { addDict } from '@/uni_modules/lime-pinyin'
// 非app
import CharsDict from '@pinyin-pro/data/chars'; // 僻字字典
import CompleteDict from '@pinyin-pro/data/complete'; // 中文分词库词语拼音合集
import ModernDict from '@pinyin-pro/data/modern'; // 《现代汉语词典(第 7 版)》词语拼音合集
addDict(json)
// uniappx app 把词汇复制到static目录,或放在服务器下载到本地再加载
const manager = uni.getFileSystemManager();
manager.readFile({
filePath: 'static/modern.json',
encoding: 'utf-8',
success: (res) => {
const obj = JSON.parseObject(res.data as string)
if(obj == null) return
addDict(obj)
},
} as ReadFileOptions);