Pinyin4NET

.net 环境下使用的拼音-汉字互转库

所有的目标版本都在这一个分支上,现支持以下目标版本:

net4.0

net4.5

net4.6

net4.7

net5.0

net6.0

netcore2.0

netcore3.0

netcore3.1

netstandard1.6

netstandard2.0

netstandard2.1

源码与发行版

GitHub zip

git clone https://github.com/hyjiacan/Pinyin4Net.git

git clone https://gitee.com/hyjiacan/Pinyin4Net.git

nuget 安装

包 ID 在 4.0(含) 以前叫做 hyjiacan.py4n

Package Manager

Install-Package hyjiacan.pinyin4net

.NET CLI

dotnet add package hyjiacan.pinyin4net

Packet CLI

paket add hyjiacan.pinyin4net

注:nuget 上还有一个 Pinyin4Net 的包,

那是有网友基于此项目的早期版本发布的,并非本人发布。

编译

执行项目目录下的build.bat/build.sh可以直接开始生成所有支持的目标的Release版本,

若需要生成某个版本,请参考以下命令。

cdhyjiacan.py4n

编译DEBUG版本

dotnet build --configuration Debug

# 或

dotnet build

注:--configuration Debug 为默认配置

编译为RELEASE版本

dotnet build --configuration Release

若要编译指定的版本,使用以下参数:

dotnet build -f net40

当前配置可以使用的版本如下:

NET40

NET45

NETCOREAPP2.0

NETCOREAPP3.0

NETSTANDARD1.6

NETSTANDARD2.0

NETSTANDARD2.1

若要编译成其它的目标版本,需要自行修改hyjiacan.py4n.csptoj里面的TargetFrameworks节点,

版本名称见How to target the .NET Framework

单元测试

单元测试需要安装对应的.net 版本

cdUnitTestProject

运行所有版本的测试

dotnet test

运行指定版本的测试

dotnet test -f net45

注意:.net4.0 或以下版本不支持MsTest单元测试

WebDemo

Demo 网站基于**.NETCORE2.0**

cdWebDemo

dotnet build

dotnet run

接口

提供的所有接口,均为静态接口。

Pinyin4Net 汉字拼音查询

汉字查询接口都放在类 Pinyin4Net 内

汉字查拼音

///

/// 更新拼音数据库

///

/// 多音字作在数组中

/// 是否替换已经存在的项,默认为 false

public static void UpdateMap(Dictionary data, bool replace = false);

///

/// 获取汉字的拼音数组

///

/// 要查询拼音的汉字字符

/// 设置输出拼音的格式

/// 汉字的拼音数组,若未找到汉字拼音,则返回空数组

/// 当要获取拼音的字符不是汉字时抛出此异常

public static string[] GetPinyin(char hanzi, PinyinFormat format = PinyinFormat.None);

///

/// 获取格式化后的唯一拼音(单音字)或者第一个拼音(多音字)

///

/// 要查询拼音的汉字字符

/// 拼音输出格式化参数

///

///

/// 格式化后的唯一拼音(单音字)或者第一个拼音(多音字)

/// 当要获取拼音的字符不是汉字时抛出此异常

public static string GetFirstPinyin(char hanzi, PinyinFormat format = PinyinFormat.None);

{

var pinyin = GetPinyin(hanzi)[0];

if (format == PinyinFormat.None)

{

return pinyin;

}

return PinyinUtil.Format(pinyin, format);

}

///

/// 获取一个字符串内所有汉字的拼音数组

///

/// 要获取拼音的汉字字符串

/// 拼音输出格式化参数

/// 返回拼音列表,每个汉字的拼音会作为一个数组存放(无论是单音字还是多音字)

///

public static List GetPinyinArray(string text, PinyinFormat format);

///

/// 获取一个字符串内所有汉字的拼音(多音字取第一个读音,带格式)

///

/// 要获取拼音的汉字字符串

/// 拼音输出格式化参数

/// 是否将前面的格式中的大小写扩展到其它非拼音字符,默认为false。firstLetterOnly为false时有效

/// 是否只取拼音首字母,为true时,format无效

/// firstLetterOnly为true时有效,多音字的多个读音首字母是否全取,如果多音字拼音首字母相同,只保留一个

/// firstLetterOnly为true时,只取拼音首字母格式为[L],后面追加空格;multiFirstLetter为true时,多音字的多个拼音首字母格式为[L, H],后面追加空格

public static string GetPinyin(string text, PinyinFormat format, bool caseSpread, bool firstLetterOnly, bool multiFirstLetter);

///

/// 获取一个字符串内所有汉字的拼音(多音字取第一个读音,带格式)

///

/// 要获取拼音的汉字字符串

/// 拼音输出格式化参数

/// 是否将前面的格式中的大小写扩展到其它非拼音字符,默认为false。

///

/// 拼音处理器,在获取到拼音后通过这个来处理,

/// 如果传null,则默认取第一个拼音(多音字),

/// 参数:

/// 1 string[] 拼音数组

/// 2 char 当前的汉字

/// 3 string 要转成拼音的字符串

/// return 拼音字符串,这个返回值将作为这个汉字的拼音放到结果中

///

public static string GetPinyin(string text, PinyinFormat format, bool caseSpread, Func pinyinHandler);

///

/// 获取一个字符串内所有汉字的拼音(多音字取第一个读音,带格式),format中指定的大小写模式不会扩展到非拼音字符

///

/// 要获取拼音的汉字字符串

/// 拼音输出格式化参数

/// 格式化后的拼音字符串

public static string GetPinyin(string text, PinyinFormat format);

PinyinItem:

这是一个继承了 List 的数据结构,包含以下字段:

IsHanzi 标识是否是汉字字符

RawChar 原始的字符

拼音查汉字

///

/// 根据单个拼音查询匹配的汉字

///

/// 要查询汉字的单个拼音

/// 是否全部匹配,为true时,匹配整个拼音,否则匹配开头字符

///

public static string[] GetHanzi(string pinyin, bool matchAll);

Name4Net 姓氏拼音查询

姓氏查询接口都放在类 Name4Net 内

///

/// 更新姓氏数据库

///

/// 复姓的拼音使用一个空格分隔

/// 是否替换已经存在的项,默认为 false

public static void UpdateMap(Dictionary data, bool replace = false);

///

/// 获取姓的拼音,如果是复姓则由空格分隔

///

/// 要查询拼音的姓

/// 输出拼音格式化参数

/// 返回姓的拼音,若未找到姓,则返回null

/// 当要获取拼音的字符不是汉字时抛出此异常

public static string GetPinyin(string firstName, PinyinFormat format = PinyinFormat.None);

///

/// 获取姓的首字母,如果是复姓则由空格分隔首字母

///

/// 要查询拼音的姓

/// 返回姓的拼音首字母,若未找到姓,则返回null

/// 当要获取拼音的字符不是汉字时抛出此异常

public static string GetFirstLetter(string firstName);

///

/// 根据拼音查询匹配的姓

///

///

/// 是否全部匹配,为true时,匹配整个拼音,否则匹配开头字符,此参数用于告知传入的拼音是完整拼音还是仅仅是声母

/// 匹配的姓数组

public static string[] GetHanzi(string pinyin, bool matchAll);

格式化参数

用于对拼音输入进行格式化控制

[Flags]

public enum PinyinFormat

{

///

/// 不指定格式

///

None,

///

/// 首字母大写,此选项对 a e o i u 几个独音无效

///

CAPITALIZE_FIRST_LETTER = 1 << 1,

///

/// 全小写

///

LOWERCASE = 1 << 2,

///

/// 全大写

///

UPPERCASE = 1 << 3,

///

/// 将 ü 输出为 u:

///

WITH_U_AND_COLON = 1 << 4,

///

/// 将 ü 输出为 v

///

WITH_V = 1 << 5,

///

/// 将 ü 输出为 ü

///

WITH_U_UNICODE = 1 << 6,

///

/// 带声调标志

///

WITH_TONE_MARK = 1 << 7,

///

/// 不带声调

///

WITHOUT_TONE = 1 << 8,

///

/// 带声调数字值

///

WITH_TONE_NUMBER = 1 << 9,

}

通过组合位标识值即可格式化拼音输入。(请看 示例)

示例

// 设置拼音输出格式

PinyinFormat format = PinyinFormat.WITHOUT_TONE | PinyinFormat.LOWERCASE | PinyinFormat.WITH_U_UNICODE;

char hanzi = '李';

// 判断是否是汉字

if(PinyinUtil.IsHanzi(hanzi)){

return;

}

// 取出指定汉字的所有拼音

string[] py = Pinyin4Net.GetPinyin(hanzi);

// 取出指定汉字的所有拼音(经过格式化的)

string[] py = Pinyin4Net.GetPinyin(hanzi, format);

// 取指定汉字的唯一或者第一个拼音

Pinyin4Net.GetFirstPinyin(hanzi);

// 取指定汉字的唯一或者第一个拼音(经过格式化的)

Pinyin4Net.GetPinyin(hanzi, format);

// 根据拼音查汉字

string[] hanzi = Pinyin4Net.GetHanzi('li', true);

姓氏拼音查询

string firstName = "单于";

// 取出姓的拼音

string py = Name4Net.GetPinyin(firstName);

// 取出姓的拼音首字母

string py = Name4Net.GetFirstLetter(firstName);

// 取出姓的拼音(格式化后)

string py = Name4Net.GetPinyin(firstName, format);

// 取出匹配拼音的姓

string[] firstNames = Name4Net.GetHanzi("li", false);

数据源

拼音库

完整引用了 pinyin4j 的拼音数据库,在此表示感谢

姓氏库

库可能并不完整,或者有些姓氏拼音有误,欢迎通过 Issues 更正或者直接通过 PR 提交。

部分姓氏存在多种不同的读音,在库中仅使用了常用的读音。

捐赠列表

按捐赠时间先后从上至下排列

感谢以上朋友的支持,你们使开源更有信心。

php汉字转拼音百家姓版,Pinyin4Net: .net(core)使用的汉字转拼音库(含姓名拼音独立接口)。提供了简单的调用接口和通过拼音查询汉字的接口。...相关推荐

  1. 11,外观模式(Facade Pattern)是为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。...

    Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种.Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面.这个一致的简单的界面被称作facade. ...

  2. php汉字转拼音百家姓版,百家姓全文查询,百家姓全文带拼音

    百家姓<复姓> mò qí sī mǎ   shàng guān ōu yáng 万 俟 司 马 , 上 官 欧 阳 . xià hóu zhū gě   wén rén dōng fān ...

  3. php汉字转拼音百家姓版,Excel 将中文名改成拼音,并将姓氏放后面

    今天收到一个需求,需要将中文名改成拼音并需要将姓氏放后面 名字首字母和姓氏首字母需大写 中间加空格,类似如下 其中用到了汉子转拼音的Visual Basic 模块 英文快速分列技巧 实现首字母大写的P ...

  4. php汉字转拼音百家姓版,砚田马中华书《百家姓》(文字拼音版)

    zhào qián sūn lǐ 赵   钱  孙  李zhōu wú zhèng wáng 周   吴  郑  王féng chén chǔ wèi 冯   陈  褚  卫 jiǎng shěn h ...

  5. 汉字转化为拼音(php版)

    分享:汉字转化为拼音(php版) 很多服务器对于中文文件名支持不是很好,需要一种解决方法. 解决方法一般是产生一个ID,将这个ID做文件名:网页上如果url带汉字也经常出错:现在的解决方法一般用url ...

  6. php随机给文字拼音,汉字转化为拼音(php版)

    汉字转化为拼音(php版) 更新时间:2006年10月09日 00:00:00   作者: 汉字转化为拼音(php版) 很多服务器对于中文文件名支持不是很好,有没有好的办法来解决呢???现在的解决方法 ...

  7. php mysql 拼音首字母,Mysql应用MySQL查询汉字的拼音首字母实例教程

    <Mysql应用MySQL查询汉字的拼音首字母实例教程>要点: 本文介绍了Mysql应用MySQL查询汉字的拼音首字母实例教程,希望对您有用.如果有疑问,可以联系我们. 导读:最好的方法还 ...

  8. mysql hzpy_MySQL 实现查询汉字的拼音首字母 的字拼音

    的字拼音 MySQL 实现查询汉字的拼音首字母 时间:2010-04-06 12:23:22 类别:技术 访问:1,314 views RSS 2.0 评论 其实最好的方法还是用 PHP 来取拼音首字 ...

  9. mysql查询汉字拼音首字母的方法_MySQL查询汉字拼音首字母的方法

    下面为您介绍了MySQL查询汉字拼音首字母的方法,该方法极具实用价值,如果您之前遇到过类似方面的问题,不妨一看. MySQL查询汉字拼音首字母方法如下: 1.建立拼音首字母资料表 Sql代码: DRO ...

  10. 像中文的罗马音字体复制_罗马音大全可复制汉字免费版下载-罗马音大全可复制吊汉字app在线生成版v1.1.2 手机版-007游戏网...

    罗马音大全可复制吊汉字app在线生成版,是一款拥有各种好看文字的在线生成软件,软件功能强大,用户在线操作后即可生成各种好看的文字,用户可直接复制当作游戏名使用,能够有效的展现出自己独有的风格. 罗马音 ...

最新文章

  1. 不要把OKR用成 KPI,OKR和KPI有什么区别?
  2. linux挂载一个文件夹,linux挂载一个文件夹到另一个文件夹
  3. eureka服务下线事件监听(自定义处理逻辑)
  4. python网络编程linux清华_Python网络编程篇之socket
  5. Entity Framework 4 in Action读书笔记——第六章:理解实体的生命周期(一)
  6. krpano音量控制(我们已经转移到krpano中国网站 krpano360.com)
  7. linux串口输出重定向到文件,DOS 下将屏幕打印输出重定向到指定文件中(或重定向到并口/串口)...
  8. linux硬盘格式哪个好,linux使用哪种硬盘分区格式会比较好
  9. AD快捷键备份20210202
  10. 主题:北京亿阳信通Oracle笔试题
  11. Java多线程由易到难
  12. Java-面向对象构造函数 -(private private)关键字
  13. 修改阿里云CentOS的远程登录默认22端口
  14. vue实现实时直播 摄像头实现实时直播 dplayer+flv flv.js
  15. 基于springBoot的港口集装箱码头管理系统
  16. 应用架构COLA 2.0
  17. strcmp()函数的用法
  18. 英语学习笔记——发音篇
  19. google源码下载方法
  20. 【伊利丹】Hadoop-2.5.0-CDH5.2.0 版本升级和数据均衡 实验记录

热门文章

  1. Idea内网配置仓库地址
  2. 记一次https的免费ssl证书安装及配置过程--window系统
  3. Android面试:说一下 LiveData 的 postValue ?与SetValue有什么区别?连续调用会有什么问题?为什么?
  4. 读书会 | 第一季读书会《蛤蟆先生去看心理医生》完美收官啦
  5. AVI文件在opencore框架下的解析
  6. miRNA-转录组-蛋白组联合分析
  7. 国内外优秀的计算机视觉团队汇总|最新版
  8. 知网如何快速引用参考文献
  9. pr如何跳到关键帧_(小白学PR不迷路)只要你用过PR,这些问题你一定遇到过
  10. 职场“奇葩说”:我的老板有多坑?