node.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > node.js > Node.js汉字转拼音pinyin-pro

Node.js汉字转拼音pinyin-pro的具体使用

作者:卿·静

pinyin-pro是一个功能强大的汉字拼音转换工具库,本文就来详细的介绍一下Node.js汉字转拼音pinyin-pro的具体使用,感兴趣的可以了解一下

pinyin-pro 工具库简介

环境准备与安装

npm install pinyin-pro

基础使用示例

以下代码示例展示如何通过 pinyin-pro 库实现多种拼音转换功能:

const { pinyin } = require("pinyin-pro");

// 获取带音调拼音
console.log(pinyin("你好世界"));  //nǐ hǎo shì jiè

// 获取不带音调拼音(toneType默认为symbol)
console.log(pinyin("你好世界", { toneType: "none" }));  //ni hao shi jie

// 拼音转为数字后缀
console.log(pinyin("你好世界", { toneType: "num" }));  //ni3 hao3 shi4 jie4

// 获取拼音数组(type默认为string)
console.log(pinyin("你好世界", { type: "array" }));  //[ 'nǐ', 'hǎo', 'shì', 'jiè' ]  

// 获取不带音调拼音数组
console.log(pinyin("你好世界", 
  { 
    toneType: "none", 
    type: "array" 
  }
));       //[ 'ni', 'hao', 'shi', 'jie' ] 

// 获取数字后缀拼音数组
console.log(pinyin("你好世界", { 
  toneType: "num", 
  type: "array" 
}));     //[ 'ni3', 'hao3', 'shi4', 'jie4' ]

参数说明

声母与韵母

// 获取声母
console.log(pinyin("你好世界", { pattern: "initial" }));
//输出:n h sh j

// 获取韵母
console.log(pinyin("你好世界", { pattern: "final" }));
//输出:ǐ ǎo ì iè

// 获取韵头
console.log(pinyin("光瓜", { pattern: "finalHead", type: "array" }));
//输出:[ 'u', 'u' ]

// 获取韵腹
console.log(pinyin("关刀", { pattern: "finalBody", type: "array" }));
//输出:[ 'ā', 'ā' ]

// 获取韵尾
console.log(pinyin("大关刀", { pattern: "finalTail", type: "array" }));
//输出:[ '', 'n', 'o' ]

// 获取音调
console.log(pinyin("汉语拼音", { pattern: "num", type: "array" }));
//输出:[ '4', '3', '1', '1' ]

// 获取拼音首字母
console.log(pinyin("汉语拼音", { pattern: "first", type: "array" }));
//输出:[ 'h', 'y', 'p', 'y' ]

功能说明

通过调整 patterntype 参数,可以灵活控制输出格式(字符串或数组)。

完整拼音

// 获取拼音完整内容
console.log(pinyin("汉语拼音", { type: "all" }));

输出结果:

[
  {
    origin: '你',
    pinyin: 'nǐ',
    initial: 'n',
    final: 'ǐ',
    first: 'n',
    finalHead: '',
    finalBody: 'ǐ',
    finalTail: '',
    num: 3,
    isZh: true,
    polyphonic: [ 'nǐ' ],
    inZhRange: true,
    result: 'nǐ'
  },
  {
    origin: '好',
    pinyin: 'hǎo',
    initial: 'h',
    final: 'ǎo',
    first: 'h',
    finalHead: '',
    finalBody: 'ǎ',
    finalTail: 'o',
    num: 3,
    isZh: true,
    polyphonic: [ 'hǎo', 'hào' ],
    inZhRange: true,
    result: 'hǎo'
  }
]

结果参数说明(以“你”为例):

姓名模式

console.log(pinyin("曾乐乐"));
//输出:céng lè lè

// 姓氏模式
console.log(pinyin("曾乐乐", { surname: "head" }));
//输出:zēng lè lè

// 开启 all 姓氏模式(会将“乐”也识别为乐毅的yuè姓氏)
console.log(pinyin("曾乐乐", { surname: "all" }));
//输出:zēng yuè yuè

代码说明

非汉字字符处理

console.log(pinyin("我very喜欢吃"));
// 输出: wǒ v e r y xǐ huan chī

console.log(pinyin("我very喜欢吃", { nonZh: "removed" }));
// 输出: wǒ xǐ huan chī

console.log(pinyin("我very喜欢吃", { nonZh: "consecutive" }));
// 输出: wǒ very xǐ huan chī

参数说明

nonZh 参数控制非中文字符的处理方式:

拼音 ü 替换为 v

console.log(pinyin("吕布"));
//输出 lǚ bù

console.log(pinyin("吕布", { toneType: "none", v: true })); 
//输出 lv bu

// 带音调的 ǖ,ǘ,ǚ,ǜ 不转换
console.log(pinyin("吕布", { v: true })); 
// lǚ bù

console.log(pinyin("吕布", { type: "num", v: true })); 
//官方文档显示 lv3 bu4
//实际输出 lǚ bù

参数说明

分词

const { segment, addDict, OutputFormat } = require("pinyin-pro");
//完整词典
const CompleteDict = require("@pinyin-pro/data/complete");
//现代汉语词典
const ModernChineseDict = require("@pinyin-pro/data/modern");

addDict(CompleteDict); //这里使用完整词典

let res1 = segment("小明硕士毕业于中国科学院计算所,后在日本京都大学深造");

res1 是默认输出格式的结果,通常为分词后的数组形式,结果如下:

[
  { origin: '小', result: 'xiǎo' },
  { origin: '明', result: 'míng' },
  { origin: '硕士', result: 'shuòshì' },
  { origin: '毕业', result: 'bìyè' },
  { origin: '于', result: 'yú' },
  { origin: '中国科学院', result: 'zhōngguókēxuéyuàn' },
  { origin: '计算所', result: 'jìsuànsuǒ' },
  { origin: ',', result: ',' },
  { origin: '后', result: 'hòu' },
  { origin: '在', result: 'zài' },
  { origin: '日本京都大学', result: 'rìběnjīngdūdàxué' },
  { origin: '深造', result: 'shēnzào' }
]

分词的不同返回格式

let res2 = segment("小明硕士毕业于中国科学院计算所,后在日本京都大学深造", {
  format: OutputFormat.AllSegment,
});

format:

let res = segment("小明硕士毕业于中国科学院计算所,后在日本京都大学深造", {
  format: OutputFormat.AllString,
  separator: "-",
});

使用自定义分隔符 -,将分词结果以字符串形式返回,适合需要特定分隔符的场景。

拼音汉字匹配

若拼音和文本匹配,返回匹配的文本下标:

import { match } from 'pinyin-pro';

match('汉语拼音', 'hanyupinyin'); // [0, 1, 2, 3]

使用 continuous 属性指定匹配的汉字下标是否为连续的才算匹配成功(默认值为 false,即不需要为连续的匹配):

import { match } from 'pinyin-pro';

match('汉语拼音', 'hanpin'); // [0, 2]

match('汉语拼音', 'hanpin', { continuous: true }); // null

使用 precision 属性可以控制汉字和拼音匹配的精度:

import { match } from 'pinyin-pro';

// 默认首字母匹配算匹配成功
match('中文拼音', 'zwpy'); // [0, 1, 2, 3]

// every 需要每一个字符都匹配成功
match('中文拼音', 'zwpy', { precision: 'every' }); // null
match('中文拼音', 'zhongwenpinyin', { precision: 'every' }); // [0, 1, 2, 3]

// start 只要开头任意个字母匹配就算匹配成功
match('中文拼音', 'zhwpy', { precision: 'start' }); // [0, 1, 2, 3]
match('中文拼音', 'zhwpy'); // null

// any 任意有一个字母匹配就算匹配成功
match('中文拼音', 'ongwpy', { precision: 'any' }); // [0, 1, 2, 3]
match('中文拼音', 'ongwpy'); // null

使用 space 属性控制匹配时空格是否不参与匹配:

import { match } from 'pinyin-pro';

// 默认不参与匹配
match('汉语拼音', 'han yupinyin'); // [0, 1, 2, 3]

match('汉语拼音', 'han yupinyin', { space: 'preserve' }); // null

使用 lastPrecision 属性可以控制最后一个汉字和拼音匹配的精度。默认情况下,precision 为 any 时,lastPrecision 为 any; 否则 lastPrecision 为 start

import { match } from 'pinyin-pro';

// 默认情况下
match('汉语拼音', 'hanyupiny'); // [1, 2, 3, 4]

// 显式控制 lastPrecision
match('汉语拼音', 'hanyupiny', { lastPrecision: 'every' }); // null

对于多音字,只要其中一个读音匹配上即算匹配成功:

import { match } from 'pinyin-pro';

match('会计', 'kuaiji'); // [0, 1]
match('会计', 'huiji'); // [0, 1]

通过指定 v 选项来使用 v 来匹配 ü:v3.25.0+

import { match } from 'pinyin-pro';

match('吕布', 'lvbu'); // [0, 1]

HTML字符串

import { html } from 'pinyin-pro';

const htmlString = html('汉语拼音');
//输出html字符串

在浏览器中的预览效果如下:

当设置 toneType 属性的值为 none 时,返回值中的拼音是不带音调的。

import { html } from 'pinyin-pro';

const htmlString = html('汉语拼音', { toneType: 'none' });

在浏览器中的预览效果如下:

可以通过 html api 返回值中的类名来控制具体的样式,如下面的例子中,我们让汉字部分为蓝色,拼音部分为红色。

// js
import { html } from 'pinyin-pro';

const htmlString = html('汉语拼音');
/* css */
.py-chinese-item {
  color: blue;
}
.py-pinyin-item {
  color: red;
}

在浏览器中的预览效果:

到此这篇关于Node.js汉字转拼音pinyin-pro的具体使用的文章就介绍到这了,更多相关Node.js汉字转拼音pinyin-pro内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文