pinyin4j 是一个支持将简体和繁体中文转换到成拼音的Java开源类库;

依赖jar包导入

        <!-- pinyin4j 汉语转拼音 --><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version></dependency>

功能

支持同一汉字有多个发音
还支持拼音的格式化输出,比如第几声之类的,
同时支持简体中文、繁体中文转换为,使用起来也非常简单。
有几个常用的类:

    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:这个类为’ü’的输出提供了几个选项。

网上几个好用的Util类

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 PinYinUtil {/*** 将文字转为汉语拼音* @param chineseLanguage 要转成拼音的中文*/public String toHanyuPinyin(String chineseLanguage){char[] cl_chars = chineseLanguage.trim().toCharArray();String hanyupinyin = "";HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部小写defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ;try {for (int i=0; i<cl_chars.length; i++){if (String.valueOf(cl_chars[i]).matches("[\u4e00-\u9fa5]+")){// 如果字符是中文,则将中文转为汉语拼音hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0];} else {// 如果字符不是中文,则不转换hanyupinyin += cl_chars[i];}}} catch (BadHanyuPinyinOutputFormatCombination e) {System.out.println("字符不能转成汉语拼音");}return hanyupinyin;}public static String getFirstLettersUp(String ChineseLanguage){return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.UPPERCASE); // 转大写}public static String getFirstLettersLo(String ChineseLanguage){return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.LOWERCASE); // 转小写}public static String getFirstLetters(String ChineseLanguage,HanyuPinyinCaseType caseType) {char[] cl_chars = ChineseLanguage.trim().toCharArray();String hanyupinyin = "";HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(caseType);// 输出拼音全部大写defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调try {for (int i = 0; i < cl_chars.length; i++) {String str = String.valueOf(cl_chars[i]);if (str.matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0].substring(0, 1);} else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字hanyupinyin += cl_chars[i];} else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母hanyupinyin += cl_chars[i];} else {// 否则不转换hanyupinyin += cl_chars[i];//如果是标点符号的话,带着}}} catch (BadHanyuPinyinOutputFormatCombination e) {System.out.println("字符不能转成汉语拼音");}return hanyupinyin;}public static String getPinyinString(String ChineseLanguage){char[] cl_chars = ChineseLanguage.trim().toCharArray();String hanyupinyin = "";HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部大写defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调try {for (int i = 0; i < cl_chars.length; i++) {String str = String.valueOf(cl_chars[i]);if (str.matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0];} else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字hanyupinyin += cl_chars[i];} else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母hanyupinyin += cl_chars[i];} else {// 否则不转换}}} catch (BadHanyuPinyinOutputFormatCombination e) {System.out.println("字符不能转成汉语拼音");}return hanyupinyin;}/*** 取第一个汉字的第一个字符* @Title: getFirstLetter* @Description: TODO* @return String* @throws*/public static String getFirstLetter(String ChineseLanguage){char[] cl_chars = ChineseLanguage.trim().toCharArray();String hanyupinyin = "";HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 输出拼音全部大写defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调try {String str = String.valueOf(cl_chars[0]);if (str.matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(cl_chars[0], defaultFormat)[0].substring(0, 1);;} else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字hanyupinyin += cl_chars[0];} else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母hanyupinyin += cl_chars[0];} else {// 否则不转换}} catch (BadHanyuPinyinOutputFormatCombination e) {System.out.println("字符不能转成汉语拼音");}return hanyupinyin;}
}
public class HanZi2PinYinUtil {public static String getAllPinyin(String hanzi) {//输出格式设置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.WITHOUT_TONE);/*** 特殊音标ü设置** WITH_V:用v表示ü* WITH_U_AND_COLON:用"u:"表示ü* WITH_U_UNICODE:直接用ü*/format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);char[] hanYuArr = hanzi.trim().toCharArray();StringBuilder pinYin = new StringBuilder();try {for (int i = 0, len = hanYuArr.length; i < len; i++) {//匹配是否是汉字if (Character.toString(hanYuArr[i]).matches("[\\u4E00-\\u9FA5]+")) {//如果是多音字,返回多个拼音,这里只取第一个String[] pys = PinyinHelper.toHanyuPinyinStringArray(hanYuArr[i], format);pinYin.append(pys[0]).append(" ");} else {pinYin.append(hanYuArr[i]).append(" ");}}} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {badHanyuPinyinOutputFormatCombination.printStackTrace();}return pinYin.toString();}public static String getFirstPinYin(String hanyu) {HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();format.setCaseType(HanyuPinyinCaseType.UPPERCASE);format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);StringBuilder firstPinyin = new StringBuilder();char[] hanyuArr = hanyu.trim().toCharArray();try {for (int i = 0, len = hanyuArr.length; i < len; i++) {if(Character.toString(hanyuArr[i]).matches("[\\u4E00-\\u9FA5]+")){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();}/*** 将字符串转移为ASCII码* @param characters* @return*/public static String getCharactersASCII(String characters) {StringBuffer strBuf = new StringBuffer();byte[] bytes = characters.getBytes();for (int i = 0; i < bytes.length; i++) {strBuf.append(Integer.toHexString(bytes[i] & 0xff));}return strBuf.toString();}
}
/*** 获得汉语拼音首字母** @param chines*            汉字* @return*/
public static String getAlpha(String chines) {String pinyinName = "";char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < nameChar.length; i++) {if (nameChar[i] > 128) {try {pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {pinyinName += nameChar[i];}}return pinyinName;
}/*** 将字符串中的中文转化为拼音,英文字符不变** @param inputString*            汉字* @return*/
public static String getPingYin(String inputString) {HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();format.setCaseType(HanyuPinyinCaseType.LOWERCASE);format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);format.setVCharType(HanyuPinyinVCharType.WITH_V);String output = "";if (inputString != null && inputString.length() > 0&& !"null".equals(inputString)) {char[] input = inputString.trim().toCharArray();try {for (int i = 0; i < input.length; i++) {if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);output += temp[0];} elseoutput += java.lang.Character.toString(input[i]);}} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {return "*";}return output;
}/*** 汉字转换为汉语拼音首字母,英文字符不变** @param chines*            汉字* @return 拼音*/
public static String converterToFirstSpell(String chines) {String pinyinName = "";char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < nameChar.length; i++) {if (nameChar[i] > 128) {try {pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {pinyinName += nameChar[i];}}return pinyinName;
}

Java汉字转拼音pinyin4j用法
汉字转拼音工具类pinyin4j
pinyin4j汉字转拼音工具包

Java中汉字转拼音pinyin4j的用法相关推荐

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

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

  2. JAVA实现汉字转换为拼音 pinyin4j/JPinyin

    转载自  JAVA实现汉字转换为拼音 pinyin4j/JPinyin 在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个 ...

  3. java pinyin4j_Java汉字转拼音pinyin4j用法详解

    一.工具介绍 pinyin4j 是一个支持将简体和繁体中文转换到成拼音的Java开源类库: 1. 功能 支持同一汉字有多个发音 还支持拼音的格式化输出,比如第几声之类的, 同时支持简体中文.繁体中文转 ...

  4. java 实现汉字转换拼音_JAVA实现汉字转拼音功能代码实例

    JAVA中汉字转拼音的方法并不复杂,可以使用pinyin4j包来实现. 一.下载pinyin4j的架包,并导入项目中,如下: 如果是maven项目,maven依赖如下: com.belerweb pi ...

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

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

  6. java实现汉字转为拼音

    java实现汉字转为拼音: 1.需要导入pinyin4j.jar package com.loo.pinyin; import net.sourceforge.pinyin4j.PinyinHelpe ...

  7. java 实现汉字转换拼音_Java实现汉字转换为拼音

    # re: Java实现汉字转换为拼音 2006-11-24 15:06 芦苇 JAVA将汉字转化成拼音的方法 /** *//** ################################## ...

  8. java 实现汉字转拼音,java汉字简体转繁体 java汉字繁体转简体

    java 实现汉字转拼音,java汉字简体转繁体 java汉字繁体转简体 一.前言 java实现汉字转拼音,我的思路是需要一个字符和拼音的映射库."我"=wo,"们&qu ...

  9. JAVA中的break[标签]continue[标签]用法

    原文:JAVA中的break[标签]continue[标签]用法 注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句.例如:tag:for或while或do--while; 1.使用brea ...

最新文章

  1. 设计模式之状态模式(State)摘录
  2. 在python中可以使用for作为变量名对吗,在Python中使用循环来命名变量
  3. Caffe学习系列(21):caffe图形化操作工具digits的安装与运行
  4. 安装Vmware-tools时CD/DVD找不到Vmware-tools压缩包
  5. python08--正则
  6. python基础===字符串的制表,换行基础操作
  7. 【图像几何】基于matlab GUI图像空间变换(仿射变换)【含Matlab源码 841期】
  8. C语言深度剖析-----数组基础
  9. 最全的Java多线程面试题
  10. 电子知识|电源管理芯片
  11. python爬虫爬取淘宝网页
  12. Educoder中Spark算子--java版本
  13. CentOS7配置supervisor开机自启[队列监听,Horizon服务启动]
  14. Python优化算法02——遗传算法
  15. 阿里云服务器最新活动-2核4G 3年低至699元
  16. 1D/1D动态规划学习总结
  17. 自学虚幻引擎图文笔记:颜色混合、法线强度调整及选择、归一化、点积、常量偏差比例、规范化等节点
  18. 逆矩阵的概念、应用和求解
  19. 最近远景论坛打不开修改hosts
  20. 重点领域知识工程课程群虚拟教研室建设启动会暨第一次教学研讨会在线召开...

热门文章

  1. 解决SQL Server报错:229、262、5123
  2. wordpress克隆站点_创建WordPress会员站点的终极指南
  3. 美术绘画之场景基础-张聪-专题视频课程
  4. mysql 验证用户名重复,Ajax案例——检验用户名是否重复
  5. 服务器安装360文档卫士,360文档卫士官方版_360文档卫士详细使用方法
  6. 讯飞webapi语音合成多音字处理
  7. shopapi总显示服务器异常,Shopee虾皮官方资料:打开API、串接API的常见问题与解答...
  8. 00_抓取猫眼电影排行TOP100
  9. RecyclerView用notifyDataSetChanged()刷新时候的图片闪烁
  10. UNICODE编码转换为ASCII编码