# 1. 介绍
cnchar 在 3.2.0 加入了输入法功能,支持根据传入的字母序列返回汉字候选数组
支持拼音输入法和五笔输入法86/98版本,支持联想输入,支持拼音扁平化携带音调输入(如shang4)
启用该功能需要安装 cnchar-input
, 该库可以独立于cnchar主库运行,但是拼音输入法需要依赖 cnchar
,联想输入依赖 cnchar-words
API声明:
cnchar.input(input: string, options?: {
type?: 'spell' | 'wubi'; // 输入法类型 默认拼音
debounce?: number; // 是否开启事件防抖 0表示不开启,其他数字表示防抖等待时间ms,默认不开启
onResult?: (result: IInputResult) => void; // 开启防抖之后不会实时返回输入计算结果,而是会通过该回调函数返回
associate?: boolean; // 是否开启联想输入,默认true
wubiVersion?: '86' | '98'; // 五笔输入法版本 默认86
wubiMode?: 'trad' | 'simple' | 'both'; // 五笔输入法默认,默认 trad,表示支持繁体字
}): IInputResult;
type IInputResult = Array<{
split: string[];
words: string[];
association: string[];
}>
# 2. 拼音输入法
当用户输入 nim 时,传入 input方法作为输入参数
cnchar.input('nim');
input 方法会搜索所有可能的拼音组合,并且查找到所有对应的汉字候选,如果开启了联想输入,则还会返回一个联想候选,并且按照权重对所有候选结果排序
返回值
[
{
association: ['你们 匿名', '-'],
split: ['ni', 'm'],
words: ['尼尼伲伲你拟呢坭妮怩泥泥昵逆倪匿铌旎猊溺睨腻霓鲵嶷', 'm']
},
{
association: [],
split: ['nim'],
words: ['nim']
}
]
开启事件防抖
cnchar.input('nim', {
debounce: 1000, // 等待1s种进行计算,如有新输入,则重新计算
onResult(result){
}
});
带音调输入
cnchar.input('ni3m');
# 2. 五笔输入法
以默认使用的86版本举例
当用户输入 qtnyb 时,传入 input方法作为输入参数
cnchar.input('qtnybj', {type: 'wubi'})
input 方法会搜索所有可能的五笔组合,并且查找到所有对应的汉字候选,如果开启了联想输入,则还会返回一个联想候选,并且按照权重对所有候选结果排序
[
{
association: ['夕', '阳'],
split: ['QTNY', 'BJ'],
words: ['夕', '阳陽隄陧隅隰']
},
{
association: ['勹', '亨'],
split: ['QTN', 'YBJ'],
words: ['勹', '亨']
}
]
使用 98 版本五笔输入法
cnchar.input('qtnybj', {
type: 'wubi',
wubiVersion: '98'
})
只使用简体字
cnchar.input('qtnybj', {
type: 'wubi',
wubiMode: 'simple'
})