本文实例讲述了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 判断汉字音调_Java中汉字转拼音pinyin4j用法实例分析相关推荐

  1. java 判断 中文字符_java中判断字符串中是否有中文字符

    package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...

  2. java多线程百米赛跑_JAVA CountDownLatch(倒计时计数器)用法实例

    这篇文章主要介绍了JAVA CountDownLatch(倒计时计数器)用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法说明: publ ...

  3. java list 遍历效率_java使用ArrayList遍历及效率比较实例分析

    本文实例讲述了java使用ArrayList遍历及效率比较.分享给大家供大家参考.具体如下:ArrayList arrL = new ArrayList(); ArrayList arrLTmp1 = ...

  4. python threading join_Python中threading模块join函数用法实例分析

    本文实例讲述了Python中threading模块join函数用法.分享给大家供大家参考.具体分析如下: join的作用是众所周知的,阻塞进程直到线程执行完毕.通用的做法是我们启动一批线程,最后joi ...

  5. java 判断汉字音调_JAVA实现汉字转换为拼音 自动识别常用多音字 JPinyin

    JAVA实现汉字转换为拼音 自动识别常用多音字 JPinyin 使用JPinyin,可以实现汉字转换为拼音,并自动识别常用多音字,还支持简体转换为繁体,检查是否为简体,是否为繁体,是否为中文字符等功能 ...

  6. java判断栈空_java中栈的应用-判断分隔符是否合理

    栈是软件系统应用最广泛的数据结构之一,只要涉及先进后出的处理特征都可以使用栈结构. 例如:函数递归调用中的地址和参数值的保存,文本编辑器中序列的保存,在编译软件设计中的括号匹配及表达式求值,网页访问历 ...

  7. java判断线程结束_java中如何判断一个线程是否结束

    我们可以通过调用thread.Join()方法,把要判断的线程加入到当前线程中,这样可以将两个交替执行的线程合并为顺序执行的线程.如果顺利执行,则说明该线程未结束. (视频教程推荐:java视频) 比 ...

  8. java判断是否闰年_java中判断是否是闰年的方法详解

    给定一个年份,判断是否是闰年.条件为:(推荐:java视频教程) A:能被4整除,并且不能被100整除.或者 B:能被400整除. 分析: 首先题目中的A与B为两个判断闰年为真的选项,且属于" ...

  9. java 判断时间合法_java 中 Date 类型快判断日期是否合法.

    // 如果日期不合法,则抛异常 try { String date_str = "5555-22-33"; SimpleDateFormat format=new SimpleDa ...

最新文章

  1. java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor错误
  2. invalid value encountered in double_scalars
  3. 13、Java Swing事件监听:事件处理模型和事件监听器
  4. 由Android 65K方法数限制引发的思考
  5. rust(22)-不可变字符串借用
  6. IIS - 用户 NT AUTHORITY\NETWORK SERVICE 登录失败解决方法
  7. 指针一维数组名的含义
  8. [转][读书笔记]深入理解java虚拟机
  9. 小京东商城用什么版本的php,最新2018小京东多用户通用商城网源码商城带手机版ecshop源码程序...
  10. vuxui 安装使用,解决npm项目文件严重问题提示
  11. 使用网易云api、Vue 和swiper实现轮播图 (音乐app项目-第2步)
  12. 好用的开源软件_推荐_良心软件
  13. 如何将MDF文件转换为XLS文件?
  14. 90后游戏开发大神毛星云跳楼自杀!8年执着国产3A梦碎
  15. hyper-v无法连接本地计算机,如何在Hyper-V虚拟机中访问本地和USB硬盘驱动器
  16. c语言累加和求平均数程序,c语言编程:连续输入若干个正整数,求其和及其平均值,直到输入0结束....
  17. python计算圆周率_用python程序求圆周率到任意位
  18. POJ - 3537 Crosses and Crosses (MLI - SG)
  19. 2019-11软考报名网站汇总,陆续更新
  20. .so has text relocations. This is wasting memory and prevents security hardening. Please fix.

热门文章

  1. EOS区块链一周要闻回顾(2.17-2.23)
  2. 防水蓝牙耳机哪个好?蓝牙耳机200到400推荐
  3. 基于51单片机的霓虹灯控制器的设计
  4. java向mysql写入数据慢_通过java代码往mysql数据库中写入日期相关数据少13个小时...
  5. 解决Java向mysql插入数据时的乱码和时区问题
  6. 浅谈需求分析的几个来源。
  7. Spring 循环依赖
  8. 计算两个日期相差的月数
  9. 处理SIGPIPE信号
  10. Android学习笔记之SoftReference软引用...