Java中汉字转拼音pinyin4j用法实例分析

 更新时间:2015年12月21日 12:30:56   转载 作者:tanguang_honesty  
这篇文章主要介绍了Java中汉字转拼音pinyin4j用法,结合实例形式较为详细的分析了pinyin4j库的具体使用技巧,需要的朋友可以参考下

本文实例讲述了Java中汉字转拼音pinyin4j用法。分享给大家供大家参考,具体如下:

汉字转换拼音在日常开发中是个很常见的问题。例如我们伟大的12306,在地名中输入“WH”,就会出现“武汉”“芜湖”“威海”等地名,输入“WUHU”就会出现“芜湖”。

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不能通过上下文来判断多音字的读音。

所以,在获取一个包含多音字的词语的读音,可以返回一个列表,正确的读音只能是人工判断选择。

希望本文所述对大家Java程序设计有所帮助。

相关文章

  • JAVA JSP页面技术之EL表达式整理归纳总结

    JAVA JSP页面技术之EL表达式整理归纳总结

    这篇文章主要介绍了java中JSP页面技术之EL表达式概念作用以及语法等的使用,需要的朋友可以参考
    2017-04-04
  • Java读取txt文件的方法

    Java读取txt文件的方法

    这篇文章主要为大家详细介绍了Java读取txt文件的方法,分享Java读取txt文件代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 基于NIO的Netty网络框架(详解)

    基于NIO的Netty网络框架(详解)

    下面小编就为大家带来一篇基于NIO的Netty网络框架(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java面向对象程序设计:类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法详解

    Java面向对象程序设计:类的定义,静态变量,成员变量,构造函数

    这篇文章主要介绍了Java面向对象类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法,较为详细的分析了Java类的定义,静态变量,成员变量,构造函数,封装,私有等相关原理、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • java实现合并2个文件中的内容到新文件中

    java实现合并2个文件中的内容到新文件中

    这篇文章主要介绍了java实现合并2个文件中的内容到新文件中,思路非常不错,这里推荐给大家。
    2015-03-03
  • SpringBoot与Quartz集成实现分布式定时任务集群的代码实例

    SpringBoot与Quartz集成实现分布式定时任务集群的代码实例

    今天小编就为大家分享一篇关于SpringBoot与Quartz集成实现分布式定时任务集群的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 详解Spring Boot 项目启动时执行特定方法

    详解Spring Boot 项目启动时执行特定方法

    这篇文章主要介绍了详解Spring Boot 项目启动时执行特定方法,Springboot给我们提供了两种“开机启动”某些方法的方式:ApplicationRunner和CommandLineRunner。感兴趣的小伙伴们可以参考一下
    2018-06-06
  • mybatis中的缓存问题解析

    mybatis中的缓存问题解析

    本篇文章主要介绍了mybatis中的缓存问题解析,详细的介绍了关于mybatis的一级缓存和二级缓存,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • Java并发编程中的生产者与消费者模型简述

    Java并发编程中的生产者与消费者模型简述

    这篇文章主要介绍了Java并发编程中的生产者与消费者模型简述,多线程并发是Java编程中最终要的部分之一,需要的朋友可以参考下
    2015-07-07
  • java反射原理制作对象打印工具

    java反射原理制作对象打印工具

    本文主要给大家介绍了java反射原理制作对象打印工具的方法和代码,以及一个热心网友给出的更加简洁方便的代码,小伙伴们需要的话可以参考下。
    2015-12-12

最新评论