一、定义

pinyin4j库是一个将汉字转换为拼音(汉语拼音,罗马拼音等)的流行开源java类库,其中最常见的几个类有:

    net.sourceforge.pinyin4j.PinyinHelper;net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;net.sourceforge.pinyin4j.format.HanyuPinyinToneType;net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;PinyinHelper:提供实用方法,用于将中文(简体和繁体)转换为各种中文或罗马拼音 ;HanyuPinyinOutputFormat:定义如何将汉语拼音格式化输出;HanyuPinyinCaseType:拼音大小写设置;HanyuPinyinToneType:音调格式化设置;HanyuPinyinVCharType:这个类为'ü'的输出提供了几个选项。

maven依赖:

 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency>

二、使用PinyinHelper处理汉语拼音格式

方式一

static java.lang.String[] toHanyuPinyinStringArray(char ch) 方法将汉字转换成拼音,返回的是一个string字符串数组类型,即该汉字的所有读音。

方式二

static java.lang.String[] toHanyuPinyinStringArray(char ch, HanyuPinyinOutputFormat outputFormat) 方法将汉字转换成指定格式的拼音,返回的是一个string字符串数组类型,将该汉字的所有读音以指定的格式进行输出。

方式三

static java.lang.String toHanyuPinyinString(java.lang.String str, HanyuPinyinOutputFormat outputFormat, java.lang.String seperater) 方法将汉语按指定的格式和分隔符转换成拼音,遇到多音字时取第一个读音,返回指定间隔的拼音字符串。

三、创建HanyuPinyinOutputFormat对象处理拼音输出格式

 HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();

该对象有以下几个方法设置格式:

1)设置拼音的大小写: setCaseType(HanyuPinyinCaseType caseType)方法

HanyuPinyinCaseType.UPPERCASE:设置为大写,如:刘->LIU2HanyuPinyinCaseType.LOWERCASE:设置为小写,如:刘->liu2

2)设置ü的显示方式:setVCharType(HanyuPinyinVCharType charType)方法

HanyuPinyinVCharType.WITH_U_AND_COLON:显示为u:(默认)HanyuPinyinVCharType.WITH_V :显示为vHanyuPinyinVCharType.WITH_U_UNICODE:显示为ü

3)设置声调显示方式:setToneType(HanyuPinyinToneType toneType)方法

HanyuPinyinToneType.WITH_TONE_NUMBER:设置数字声调(默认) ,如:刘->liu2HanyuPinyinToneType.WITHOUT_TONE:设置不显示声调,如:刘->liuHanyuPinyinToneType.WITH_TONE_MARK:设置显示声调,前提必须设置V如何显示,如:刘-> liú

四、实例

package com.daze.pinyin;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;public class Pinyin4jUtil {private static String CHINESE_REGEX = "[\\u4E00-\\u9FA5]+";/*** @Description 获取全拼* @param chinese  中文* @return java.lang.String 全拼*/public static String getAllPinyin(String chinese) {//输出格式设置HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();/*** 输出大小写设置** LOWERCASE:输出小写* UPPERCASE:输出大写*/format.setCaseType(HanyuPinyinCaseType.LOWERCASE);/*** 输出音标设置** WITH_TONE_MARK:直接用音标符(必须设置WITH_U_UNICODE,否则会抛出异常)* WITH_TONE_NUMBER:1-4数字表示音标* WITHOUT_TONE:没有音标*/format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);/*** 特殊音标ü设置** WITH_V:用v表示ü* WITH_U_AND_COLON:用"u:"表示ü* WITH_U_UNICODE:直接用ü*/format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);char[] hanYuArr = chinese.trim().toCharArray();StringBuilder pinYin = new StringBuilder();try {for (int i = 0, len = hanYuArr.length; i < len; i++) {//匹配是否是汉字if (Character.toString(hanYuArr[i]).matches(CHINESE_REGEX)) {//如果是多音字,返回多个拼音,这里只取第一个String[] pys = PinyinHelper.toHanyuPinyinStringArray(hanYuArr[i], format);pinYin.append(pys[0]);} else {pinYin.append(hanYuArr[i]);}if(i < len - 1){pinYin.append(" ");}}} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {badHanyuPinyinOutputFormatCombination.printStackTrace();}return pinYin.toString();}/*** @Description 获取首字母字* @param chinese 中文* @return java.lang.String*/public static String getFirstPinYin(String chinese) {HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();format.setCaseType(HanyuPinyinCaseType.UPPERCASE);format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);StringBuilder firstPinyin = new StringBuilder();char[] hanyuArr = chinese.trim().toCharArray();try {for (int i = 0, len = hanyuArr.length; i < len; i++) {if(Character.toString(hanyuArr[i]).matches(CHINESE_REGEX)){String[] pys = PinyinHelper.toHanyuPinyinStringArray(hanyuArr[i],format);firstPinyin.append(pys[0].charAt(0));}else {firstPinyin.append(hanyuArr[i]);}}} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {badHanyuPinyinOutputFormatCombination.printStackTrace();}return firstPinyin.toString();}public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {String pinYin = getAllPinyin("中华人民共和国万岁");String firstPinYin = getFirstPinYin("中华人民共和国万岁");String pinYin2 = PinyinHelper.toHanyuPinyinString("中华人民共和国万岁",new HanyuPinyinOutputFormat()," ");System.out.println("中华人民共和国万岁:"+pinYin);System.out.println("中华人民共和国万岁:"+firstPinYin);System.out.println("中华人民共和国万岁:"+pinYin2);}
}

转换结果

pinyin4j汉语拼音库的使用相关推荐

  1. pinyin4j使用说明

    Pinyin4j使用说明 一.自述文件翻译 pinyin4j的自述 表中的内容 一.主要特点 二.未来的工作 三.如何安装 四.开始 五.作者 六.版权 一.主要特点 1.支持从汉字(简体和复制)到不 ...

  2. java pinyin4j.jar,android pinyin4j.jar

    我的应用 登录 注册 论坛首页 → Java编程和Java企业应用版 → Java综合 → 汉语转拼音之pinyin4j全部 Hibernate Spring Struts iBATIS 企业应用 设 ...

  3. java hanyupinyinoutputformat();_Java汉字转拼音pinyin4j用法

    Java汉字转拼音pinyin4j用法 在学习编程的过程中,我觉得不止要获得课本的知识, 更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请登陆疯狂java官网. ...

  4. java 判断汉字音调_Java中汉字转拼音pinyin4j用法实例分析

    本文实例讲述了Java中汉字转拼音pinyin4j用法.分享给大家供大家参考,具体如下: 汉字转换拼音在日常开发中是个很常见的问题.例如我们伟大的12306,在地名中输入"WH", ...

  5. java获取首字母_【Java】获取中文首字母

    获取中文首字母 有时候,比如微信上根据名字拼音首字母排序并检索.那么用Java获取中文首字母是怎么实现的呢? 代码 不多说,直接上代码:(写个工具类) public class FirstCharUt ...

  6. java 汉字转拼音工具_【转载】Java汉字转全拼工具

    个人在使用过程发现了几个问题需要注意: 1.本类使用了Pinyin4j开源库.点击下载 2.Pinyin4j本身是支持多音字的,但这胸弟貌似处理掉了,"长沙"会返回"zh ...

  7. 项目:Search_Everything(仿EveryThing的文件搜索工具)

    目录 项目总览 项目流程 项目搭建 maven项目 Database Navigator插件 类的设计和实现 Main类 resources包 app.fxml文件 init.sql文件 工具包Uti ...

  8. 利用喜欢的字给小孩取名

    思路: 1.利用喜欢的字 2.按照平仄规律,三个字,第一个是姓,第二个字是三声或者四声的仄声调,第三个字是一声或者二声的平声调,给出所有的排列.使用的是pinyin4j的库 1.盛唐诗,宋诗.宋诗选注 ...

  9. 仿美团实现地域选择和城市列表

    介绍 在开发O2O相关应用的时候,肯定会有定位,选择所在城市,选择地域,然后再向服务器请求该地区的相关数据,这时就需要我们提供一个导向让用户选择所在区域. 看来看去,最终还是选择模仿美团,感觉用户体验 ...

最新文章

  1. 下一代安全威胁的内幕故事
  2. FlushMode属性与transaction(spring注入的事务)
  3. Django框架学习索引
  4. 浅拷贝和深拷贝的应用
  5. 瑞幸咖啡的每一个环节,都蕴含着增长知识点
  6. 【Linux】一步一步学Linux——read命令(220)
  7. Python3 练习笔记五
  8. php idwork,idwork.php
  9. 算法思想——贪心(详细举例理解~)
  10. select2使用帮助
  11. 调试mysql语句_Mysql sql 语句调试
  12. VS2017下载地址和安装教程(图解)
  13. 【hibernate】idea利用maven搭建hibernate环境(创建hibernate配置文件(包括cfg和hbm))
  14. Unity动画 代码加载动画,可复用
  15. 投入产出表matlab,投入产出分析投入产出表.doc
  16. 好用的在线音乐网站,有这5个就够了(收藏备用)
  17. tomcat国内下载地址
  18. python全套壁纸_Python 全自动壁纸更新系统
  19. 安卓手机/Android11系统无法访问android文件夹下的data目录,怎么解决?
  20. c语言正切值怎么表示,C语言中正切的相关函数总结

热门文章

  1. 你和那些优秀的人差距在哪里?
  2. 惠普服务器CPU位置,手把手教你换CPU 看惠普16核产品性能变化
  3. 阿姆达尔定律和Gustafson law
  4. linux下oracle数据库升级,Linux下升级Oracle 10
  5. 【go】网络编程-HTTP编程
  6. 作为码农的我嫁了个程序员老公(结婚、生娃、婆媳、未来)
  7. 子不语启动招股:业绩开始下滑,存在破发风险,由华丙如夫妇控股
  8. 《ASP.NET Web API 2框架揭秘》
  9. 用PyTorch玩转Transformer英译中翻译
  10. 843c语言真题,浙江工业大学 843 数据结构(c语言版)2008真题回忆 +考试技巧