Java汉字转拼音pinyin4j用法 .
2016-01-15 17:07
621 查看
汉字转换拼音在日常开发中是个很常见的问题。例如我们伟大的12306,在地名中输入“WH”,就会出现“武汉”“芜湖”“威海”等地名,输入“WUHU”就会出现“芜湖”。
Java获取汉字的拼音,pinyin4j这个库可以很好的解决这个问题。
下载地址:http://sourceforge.net/projects/pinyin4j/
下载解压,里面有个pinyin4j-2.5.0.jar,使用这个库即可。
汉字转拼音:
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重');
上面这行代码就是单个汉字转拼音了,例如“重”字,该方法返回一个String类型的数组:
"zhong4"
"chong2"
“重”是一个多音字,该方法的返回数组包含这个字的所有读音的拼音。每个读音最后有个数字就是音调(第一声 第二声 第三声 第四声,这个不用解释了)。
上面是最简单的一种获取单个汉字的方式,还可以使用HanyuPinyinOutputFormat来格式化返回拼音的格式。
toHanyuPinyinStringArray如果传入的字符不是汉字不能转换成拼音,那么会直接返回null。
虽然pinyin4j很好用,但是还是有局限的。以上代码只能获取单个汉字的拼音,但是不能获取一个包含多音字的词的拼音。例如“重庆”,无法判断到底是“chongqing”还是“zhongqing”,pinyin4j不能通过上下文来判断多音字的读音。
所以,在获取一个包含多音字的词语的读音,可以返回一个列表,正确的读音只能是人工判断选择。
作者:叉叉哥 转载请注明出处:http://blog.csdn.net/xiao__gui/article/details/8558620
Java获取汉字的拼音,pinyin4j这个库可以很好的解决这个问题。
下载地址:http://sourceforge.net/projects/pinyin4j/
下载解压,里面有个pinyin4j-2.5.0.jar,使用这个库即可。
汉字转拼音:
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重');
上面这行代码就是单个汉字转拼音了,例如“重”字,该方法返回一个String类型的数组:
"zhong4"
"chong2"
“重”是一个多音字,该方法的返回数组包含这个字的所有读音的拼音。每个读音最后有个数字就是音调(第一声 第二声 第三声 第四声,这个不用解释了)。
上面是最简单的一种获取单个汉字的方式,还可以使用HanyuPinyinOutputFormat来格式化返回拼音的格式。
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); // UPPERCASE:大写 (ZHONG) // LOWERCASE:小写 (zhong) format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // WITHOUT_TONE:无音标 (zhong) // WITH_TONE_NUMBER:1-4数字表示英标 (zhong4) // WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常) (zhòng) format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); // WITH_V:用v表示ü (nv) // WITH_U_AND_COLON:用"u:"表示ü (nu:) // WITH_U_UNICODE:直接用ü (nü) format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重', format);
toHanyuPinyinStringArray如果传入的字符不是汉字不能转换成拼音,那么会直接返回null。
虽然pinyin4j很好用,但是还是有局限的。以上代码只能获取单个汉字的拼音,但是不能获取一个包含多音字的词的拼音。例如“重庆”,无法判断到底是“chongqing”还是“zhongqing”,pinyin4j不能通过上下文来判断多音字的读音。
所以,在获取一个包含多音字的词语的读音,可以返回一个列表,正确的读音只能是人工判断选择。
作者:叉叉哥 转载请注明出处:http://blog.csdn.net/xiao__gui/article/details/8558620
相关文章推荐
- Spring cloud实现服务注册及发现
- JavaMail的com/sun/mail/util/LineInputStream错误 以及解决办法
- 【菜鸟学Java】8:List实体集合中保证产品名称不重复
- java接口与抽象类学习总结
- struts-2.3.24.1中的jar的详解
- 最近遇到nutch导入eclipse后产生到一些问题
- Java基于Socket实现HTTP下载客户端
- Java监控工具、调优、调试辅助函数
- JAVA设计模式之:访问者模式
- 详细解析Java中抽象类和接口的区别
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JAB(java access bridge)学习和使用
- Eclipse导入MyEclipse工程(web项目显示为java项目解决办法)
- Spring transaction事务之roll back回滚
- javaweb中ajax跨域访问实例
- Java:util.Date与sql.Date的区别和转化
- java(12)--xml之sax方式解析文档
- gradle--java入门(转)
- Java设计模式——模板方法设计模式——抽象类的运用
- Java利用MessageDigest获取字符串或文件MD5详解