match v3.15.0+
pinyin-pro
内部导出了 match
函数,可以进行文字和拼音匹配,并返回匹配的文字在字符串中的下标。
示例
常规匹配
若拼音和文本匹配,返回匹配的文本下标:
js
import { match } from 'pinyin-pro';
match('汉语拼音', 'hanyupinyin'); // [0, 1, 2, 3]
import { match } from 'pinyin-pro';
match('汉语拼音', 'hanyupinyin'); // [0, 1, 2, 3]
是否连续
使用 continuous
属性指定匹配的汉字下标是否为连续的才算匹配成功(默认值为 false,即不需要为连续的匹配):
js
import { match } from 'pinyin-pro';
match('汉语拼音', 'hanpin'); // [0, 2]
match('汉语拼音', 'hanpin', { continuous: true }); // null
import { match } from 'pinyin-pro';
match('汉语拼音', 'hanpin'); // [0, 2]
match('汉语拼音', 'hanpin', { continuous: true }); // null
精度
使用 precision
属性可以控制汉字和拼音匹配的精度:
js
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
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
属性控制匹配时空格是否不参与匹配:
js
import { match } from 'pinyin-pro';
// 默认不参与匹配
match('汉语拼音', 'han yupinyin'); // [0, 1, 2, 3]
match('汉语拼音', 'han yupinyin', { space: 'preserve' }); // null
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
。
js
import { match } from 'pinyin-pro';
// 默认情况下
match('汉语拼音', 'hanyupiny'); // [1, 2, 3, 4]
// 显式控制 lastPrecision
match('汉语拼音', 'hanyupiny', { lastPrecision: 'every' }); // null
import { match } from 'pinyin-pro';
// 默认情况下
match('汉语拼音', 'hanyupiny'); // [1, 2, 3, 4]
// 显式控制 lastPrecision
match('汉语拼音', 'hanyupiny', { lastPrecision: 'every' }); // null
多音字匹配
对于多音字,只要其中一个读音匹配上即算匹配成功:
js
import { match } from 'pinyin-pro';
match('会计', 'kuaiji'); // [0, 1]
match('会计', 'huiji'); // [0, 1]
import { match } from 'pinyin-pro';
match('会计', 'kuaiji'); // [0, 1]
match('会计', 'huiji'); // [0, 1]
语法及参数
语法
js
import { match } from 'pinyin-pro';
interface MatchOptions {
precision?: 'first' | 'start' | 'every' | 'any';
continuous?: boolean;
space?: 'ignore' | 'preserve';
lastPrecision?: 'first' | 'start' | 'every' | 'any';
}
match(text, pinyin, options?: MatchOptions); // 匹配成功返回匹配汉字对应下标数组; 不成功返回 null
import { match } from 'pinyin-pro';
interface MatchOptions {
precision?: 'first' | 'start' | 'every' | 'any';
continuous?: boolean;
space?: 'ignore' | 'preserve';
lastPrecision?: 'first' | 'start' | 'every' | 'any';
}
match(text, pinyin, options?: MatchOptions); // 匹配成功返回匹配汉字对应下标数组; 不成功返回 null
参数
text
(必传):string 类型,要匹配的文本pinyin
(必传):string 类型,要匹配的拼音options
(可选): object 类型,匹配规则的配置,详细见下表:
属性 | 类型 | 描述 | 可选值 | 说明 | 默认值 |
---|---|---|---|---|---|
precision | string | 匹配的精度 | first | 首字母或者全拼和当前拼音相等即为匹配成功 | first |
start | 以当前拼音为开头即为匹配成功 | ||||
every | 全拼和当前拼音严格相等才算匹配成功 | ||||
any | 包含当前拼音的所有字符即为匹配成功 | ||||
continuous | boolean | 匹配的汉字下标是否需要为连续的才算匹配成功 | true | 不需要 | false |
false | 需要 | ||||
space | string | 匹配时对于汉字和拼音中空格的处理 | ignore | 忽略 | ignore |
preserve | 保留 | ||||
lastPrecision | string | 最后一个字符匹配的精度 | first | 首字母或者全拼和当前拼音相等即为匹配成功 | 当 precision 为 any 时,lastPrecision 默认为 any ;其他情况下 lastPrecision 默认为 start |
start | 以当前拼音为开头即为匹配成功 | ||||
every | 全拼和当前拼音严格相等才算匹配成功 | ||||
any | 包含当前拼音的所有字符即为匹配成功 |