6 releases
0.2.5 | Apr 19, 2024 |
---|---|
0.2.4 | Feb 29, 2024 |
0.2.3 | Dec 25, 2023 |
#305 in Text processing
369 downloads per month
690KB
2K
SLoC
IbPinyinLib
一个高性能 Rust 拼音匹配库。
- 支持以下拼音编码方案:
- 简拼(“py”)
- 全拼(“pinyin”)
- 带声调全拼(“pin1yin1”)
- Unicode(“pīnyīn”)
- 智能 ABC 双拼
- 拼音加加双拼
- 微软双拼
- 华宇双拼(紫光双拼)
- 小鹤双拼
- 自然码双拼
- 支持多音字。
- 支持混合匹配多种拼音编码方案,默认匹配简拼和全拼。
- 默认小写字母匹配拼音或字母,大写字母只匹配字母。
- 支持 Unicode 辅助平面汉字。
支持语言
Rust
use ib_pinyin::{matcher::PinyinMatcher, pinyin::PinyinNotation};
let matcher = PinyinMatcher::builder("pysousuoeve")
.pinyin_notations(PinyinNotation::Ascii | PinyinNotation::AsciiFirstLetter)
.build();
assert!(matcher.is_match("拼音搜索Everything"));
C
#include <ib_pinyin/ib_pinyin.h>
#include <ib_pinyin/notation.h>
// UTF-8
bool is_match = ib_pinyin_is_match_u8c(u8"pysousuoeve", u8"拼音搜索Everything", PINYIN_NOTATION_ASCII_FIRST_LETTER | PINYIN_NOTATION_ASCII);
// UTF-16
bool is_match = ib_pinyin_is_match_u16c(u"pysousuoeve", u"拼音搜索Everything", PINYIN_NOTATION_ASCII_FIRST_LETTER | PINYIN_NOTATION_ASCII);
// UTF-32
bool is_match = ib_pinyin_is_match_u32c(U"pysousuoeve", U"拼音搜索Everything", PINYIN_NOTATION_ASCII_FIRST_LETTER | PINYIN_NOTATION_ASCII);
C++
原实现(停止维护)
AutoHotkey v2
#Include <IbPinyin>
IsMatch := IbPinyin_Match("pysousuoeve", "拼音搜索Everything")
; 指定拼音编码
IsMatch := IbPinyin_Match("pysousuoeve", "拼音搜索Everything", IbPinyin_AsciiFirstLetter | IbPinyin_Ascii)
; 获取匹配范围
IsMatch := IbPinyin_Match("pysousuoeve", "拼音搜索Everything", IbPinyin_AsciiFirstLetter | IbPinyin_Ascii, &start, &end)
; 中文 API
是否匹配 := 拼音_匹配("pysousuoeve", "拼音搜索Everything")
; 指定拼音编码
是否匹配 := 拼音_匹配("pysousuoeve", "拼音搜索Everything", 拼音_简拼 | 拼音_全拼)
; 获取匹配范围
是否匹配 := 拼音_匹配("pysousuoeve", "拼音搜索Everything", 拼音_简拼 | 拼音_全拼, &开始位置, &结束位置)
其它拼音相关项目
语言 | 库 | 拼音 | 双拼 | 词典 | 匹配 | 其它 |
---|---|---|---|---|---|---|
Rust (C, AHK2) |
IbPinyinLib | ✔️ Unicode | ✔️ | ❌ | ✔️ | 性能优先;支持 Unicode 辅助平面汉字 |
Rust (Node.js) |
rust-pinyin | ✔️ Unicode | ❌ | ❌ | ❌ | |
Rust | rust-pinyin | 简拼 | ❌ | ❌ | ❌ | |
C# | ToolGood.Words.Pinyin | ✔️ | ❌ | ❌ | 单编码? | |
C# | TinyPinyin.Net | ✔️ | ❌ | ❌ | ❌ | |
C# | Romanization.NET | Unicode | ❌ | ❌ | 支持日文、韩文、俄文、希腊文 | |
Java | PinIn | ✔️ | ✔️ | ❌ | ✔️ | 支持注音输入法、模糊音 |
Java | TinyPinyin | ✔️ | ❌ | ✔️ | ❌ | |
Go | go-pinyin | ✔️ | ❌ | ✔️ | ❌ | |
Python | python-pinyin | ✔️ | ❌ | ✔️ | ❌ | |
TS | pinyin-pro | ✔️ | ❌ | ❌ | ✔️ | |
JS | pinyin-match | ✔️ | ❌ | ❌ | 单编码 | 匹配时忽略空白 |
JS | pinyin-engine | ✔️ | ❌ | ❌ | 单编码 | |
JS | pinyin | ✔️ | ❌ | ✔️ | ❌ | |
JS | pinyinjs | ✔️ Unicode | ❌ | ❌ | ❌ | |
Perl (Rust, Java, Python, Ruby, JS, PHP) |
Text::Unidecode | ✔️ | ❌ | ❌ | ❌ | 支持文字广泛 |
数据库:
文件搜索/启动器:
- IbEverythingExt: Everything 拼音搜索、快速选择扩展(基于 IbPinyinLib)
- Listary(简拼、全拼)
文件管理:
- 资源管理器
- 资源管理器拼音搜索扩展(基于 IbPinyinLib)
- Directory Opus(仅简拼)
- Total Commander:QuickSearch eXtended(仅简拼)
文本编辑:
Dependencies
~3–4.5MB
~77K SLoC