汉字转拼音的使用手册
Pinyin4j使用手册
一般用法
pinyin4j的使用很方便,一般转换只需要使用PinyinHelper类的静态工具方法即可:
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(‘刘’); //该类还有其他的拼音转换形式,但是基本上用不到,就不介绍了 |
返回的数组即是该字符的拼音,如上例就是pinyin[0]=liu2,后面的数字代表声调,声调为5表示轻读,无声调。之所谓返回数组,是因为被判定的汉字有可能有多个读音。如果输入的参数不是汉字,则返回null。
拼音格式化
如果对于拼音转换后的结果有一些特定的格式要求目前pinyin4j支持:
l 声调格式化。例如:“刘”字的格式化后为“liu2”或“liu”或“liú”
l 对特殊拼音ü的的显示格式。例如“u:”或“v”或“ü”
l 大小写的转换。例如:“liu2”或“LIU2”
以上这些格式可以混合使用,下面就来介绍具体的使用方法,首先需要创建格式化对象HanyuPinyinOutputFormat,例如:
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); |
然后分别调用outputFormat的set方法设置上述一些格式要求:
设置声调格式:
outputFormat.setToneType(HanyuPinyinToneType);
方法参数HanyuPinyinToneType有以下常量对象:
HanyuPinyinToneType.WITH_TONE_NUMBER 用数字表示声调,例如:liu2
HanyuPinyinToneType.WITHOUT_TONE 无声调表示,例如:liu
HanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示,例如:liú
设置特殊拼音ü的显示格式:
outputFormat.setVCharType(HanyuPinyinVCharType);
方法参数HanyuPinyinVCharType有以下常量对象:
HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音,例如:lu:
HanyuPinyinVCharType.WITH_V 以V表示该字符,例如:lv
HanyuPinyinVCharType.WITH_U_UNICODE 以ü表示
设置大小写格式
outputFormat.setCaseType(HanyuPinyinCaseType);
HanyuPinyinCaseType.LOWERCASE 转换后以全小写方式输出
HanyuPinyinCaseType.UPPERCASE 转换后以全大写方式输出
设置好格式对象后还是利用上述的工具类方法进行拼音转换,只不过需要将格式化对象当成方法参数传入转换方法,告知要转换的格式要求:
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(‘刘’, outputFormat); |
但该方法会有异常抛出,注意处理。
示例
import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; publicclass Test { publicstaticvoid main(String[] args) { HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); outputFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); try { System.out.println(concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray('刘',outputFormat))); } catch (BadHanyuPinyinOutputFormatCombination e) { // TODO Auto-generated catch block e.printStackTrace(); } } privatestatic String concatPinyinStringArray(String[] pinyinArray) { StringBuffer pinyinStrBuf = new StringBuffer(); if ((null != pinyinArray) && (pinyinArray.length > 0)) { for (int i = 0; i < pinyinArray.length; i++) { pinyinStrBuf.append(pinyinArray[i]); pinyinStrBuf.append(System.getProperty("line.separator")); } } String outputString = pinyinStrBuf.toString(); return outputString; } } |
输出结果为:LIÚ
其他
l PinyinHelper还有其他的静态方法,但示例和讲解中使用的方法是常见的拼音格式,因此其他静态方法我没有调研其含义。
l 貌似支持生僻字,我试过很怪异的字,都可以将其读音拼写出来,因此这个工具包还是很强的。
汉字转拼音的使用手册相关推荐
- 【Python入门】一个有意思还有用的Python包-汉字转换拼音
一.应用概述 最近做一个项目,发现很多场景,把汉字转换成拼音,然后进行深度学习分类,能够取得非常不错的效果,在做内容识别,特别是涉及到同音字的时候,转换成拼音就显得特别重要.比如垃圾广告识别:公众号. ...
- Java pinyin4j 汉字转拼音包括——多音字
Java汉字转拼音(包括多音字) 有个需求需要把汉字转拼音,我的小伙伴推荐用Unicode官方的包:下载有些慢. 实际中用了Java工具包:pinyin4j解决 可以转汉字,多音字,多音字的地方要求不 ...
- mysql汉字转拼音函数
-- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` (`pin_yin_` varchar(255) CHARACTER SET gbk ...
- 昵称到拼音php,php 汉字转换拼音程序_PHP教程
php 汉字转换拼音程序 $p=ord(substr($str,$i,1)); if($p>160){ $q=ord(substr($str,++$i,1)); $p=$p*256+$q-655 ...
- 文件名批量汉字转拼音+核磁共振影像数据处理
文件名批量汉字转拼音+核磁共振影像数据处理 讲解视频内容请移步Bilibili: https://space.bilibili.com/542601735 入群讨论请加v hochzeitstorte ...
- mysql简拼_mysql实现汉字换拼音,及汉字转简拼
我们实现汉字转拼音,需要结束代码包来完成,但是有个问题 ,针对多音字,会把排列组合的所有方式 全部打印出来. 比如 地区名,都是不需要多音字的,只有一个拼音发音是正确的. 下边 我们来实现 汉字转拼音 ...
- java 汉字转拼音_推荐一款前端汉字转拼音组件工具
推荐一个前端的汉字转拼音组件 hotoo/pinyin, 支持在 Node 和 Web 浏览器环境运行. github网址:https://github.com/hotoo/pinyin 特性 根据词 ...
- C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual S ...
- android 汉字转字节,android实现汉字转拼音功能 带多音字识别
android 汉字转拼音带多音字识别功能,供大家参考,具体内容如下 问题来源 在做地名按首字母排序的时候出现了这样一个bug.长沙会被翻译拼音成zhangsha,重庆会被翻译拼音成zhong qin ...
最新文章
- 转:WebApi(一)
- ABAP性能优化之修改一组纪录
- 图像处理理论(四)——HOG, Haar, ISP
- mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数
- springboot中文语音识别_【记录】语音识别软件包、代码示例、数据集汇集
- cuda加速的头文件_如何从C ++头文件调用CUDA文件?
- qq传输文件的软件测试点,超强新功能 QQ传文件夹测试版抢先试用
- 蓝桥杯大赛青少年创意编程 第十一届 省赛 C++组试题 第1题 双面打印
- 1.3亿豪宅被拆 抱头痛哭的房主,真实身份竟是保健品大佬,曾涉嫌传销...
- Example of Zookeeper and Solr cluster with Docker networking
- 你在微信漂流瓶里遇到过哪些有意思的人和事?
- JavaScript-包装类型
- 如何区分数据科学家,数据工程师与数据分析师
- 美国华盛顿州立大学计算机排名,2019上海软科世界一流学科排名计算机科学与工程专业排名华盛顿州立大学排名第301-400...
- JavaScript 学习笔记 p61 - 69
- php redis地址和端口号,redis默认端口是什么
- 应届生面试技巧心得及选择工作走向的分析
- 商汤科技2020笔试题
- python查看微信撤回消息_python轻松实现查看微信撤回消息代码实例
- 美女为什么美?????
热门文章
- xoy面上两直线交点算法
- java番茄钟_个人用的简单番茄时钟
- 区分与检测null,undefined 与 undeclared
- 百度站长域名批量添加工具
- ORA-04098: trigger 'SYS.GGS_DDL_TRIGGER_BEFORE' is invalid and failed re-validation
- 字体图标库-icomoon的使用方法
- 寒假作业 pta编程总结2
- 最小环问题 ( Floyed )
- Python+opencv学习记录6:模糊操作
- 数字图像处理:实验一 MATLAB 图像处理基础