1. 引入maven依赖

<dependency><groupId>net.sourceforge.pinyin4j</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version>
</dependency>

2. PinYin4j工具类及其使用

import java.util.HashSet;
import java.util.Set;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 {public static void main(String[] args) {String str = "张三";System.out.println("小写输出:" + getPinyinToLowerCase(str));System.out.println("大写输出:" + getPinyinToUpperCase(str));System.out.println("首字母大写输出:" + getPinyinFirstToUpperCase(str));System.out.println("简拼输出:" + getPinyinJianPin(str));}/** 获取汉字的拼音(默认输出)* * @param chinese 汉字 如:中国* @return 返回拼音 如:zhongguo*/public static String getPinyin(String chinese) {return getPinyinZh_CN(makeStringByStringSet(chinese));}/** 拼音大写输出* * @param chinese* @return*/public static String getPinyinToUpperCase(String chinese) {return getPinyinZh_CN(makeStringByStringSet(chinese)).toUpperCase();}/** 拼音小写输出* * @param chinese* @return*/public static String getPinyinToLowerCase(String chinese) {return getPinyinZh_CN(makeStringByStringSet(chinese)).toLowerCase();}/** 首字母大写输出* * @param chinese* @return*/public static String getPinyinFirstToUpperCase(String chinese) {return getPinyin(chinese);}/** 拼音简拼输出* * @param chinese* @return*/public static String getPinyinJianPin(String chinese) {return getPinyinConvertJianPin(getPinyin(chinese));}/** 字符集转换* * @param chinese 中文汉字* @throws BadHanyuPinyinOutputFormatCombination*/public static Set<String> makeStringByStringSet(String chinese) {char[] chars = chinese.toCharArray();if (chinese != null && !chinese.trim().equalsIgnoreCase("")) {char[] srcChar = chinese.toCharArray();String[][] temp = new String[chinese.length()][];for (int i = 0; i < srcChar.length; i++) {char c = srcChar[i];// 是中文或者a-z或者A-Z转换拼音if (String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")) {try {temp[i] = PinyinHelper.toHanyuPinyinStringArray(chars[i], getDefaultOutputFormat());} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else if (((int) c >= 65 && (int) c <= 90)|| ((int) c >= 97 && (int) c <= 122)) {temp[i] = new String[] { String.valueOf(srcChar[i]) };} else {temp[i] = new String[] { "" };}}String[] pingyinArray = exchange(temp);Set<String> zhongWenPinYin = new HashSet<String>();for (int i = 0; i < pingyinArray.length; i++) {zhongWenPinYin.add(pingyinArray[i]);}return zhongWenPinYin;}return null;}/** Default Format 默认输出格式* * @version: Jan 13, 2012 9:35:51 AM* @return*/public static HanyuPinyinOutputFormat getDefaultOutputFormat() {HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 没有音调数字format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);// u显示return format;}/** * @param strJaggedArray* @return*/public static String[] exchange(String[][] strJaggedArray) {String[][] temp = doExchange(strJaggedArray);return temp[0];}/** * @param strJaggedArray* @return*/private static String[][] doExchange(String[][] strJaggedArray) {int len = strJaggedArray.length;if (len >= 2) {int len1 = strJaggedArray[0].length;int len2 = strJaggedArray[1].length;int newlen = len1 * len2;String[] temp = new String[newlen];int Index = 0;for (int i = 0; i < len1; i++) {for (int j = 0; j < len2; j++) {temp[Index] = capitalize(strJaggedArray[0][i])+ capitalize(strJaggedArray[1][j]);Index++;}}String[][] newArray = new String[len - 1][];for (int i = 2; i < len; i++) {newArray[i - 1] = strJaggedArray[i];}newArray[0] = temp;return doExchange(newArray);} else {return strJaggedArray;}}/** 首字母大写* * @param s* @return*/public static String capitalize(String s) {char ch[];ch = s.toCharArray();if (ch[0] >= 'a' && ch[0] <= 'z') {ch[0] = (char) (ch[0] - 32);}String newString = new String(ch);return newString;}/** 字符串集合转换字符串(逗号分隔)* * @param stringSet* @return*/public static String getPinyinZh_CN(Set<String> stringSet) {StringBuilder str = new StringBuilder();int i = 0;for (String s : stringSet) {if (i == stringSet.size() - 1) {str.append(s);} else {str.append(s + ",");}i++;}return str.toString();}/** 获取每个拼音的简称* * @param chinese* @return*/public static String getPinyinConvertJianPin(String chinese) {String[] strArray = chinese.split(",");String strChar = "";for (String str : strArray) {char arr[] = str.toCharArray(); // 将字符串转化成char型数组for (int i = 0; i < arr.length; i++) {if (arr[i] >= 65 && arr[i] < 91) { // 判断是否是大写字母strChar += new String(arr[i] + "");}}strChar += ",";}return strChar;}
}

运行结果:

参考:https://blog.csdn.net/jojo_wen/article/details/84128200
https://www.e-learn.cn/topic/2624707
https://blog.csdn.net/jojo_wen/article/details/84128200

pinyin4j 中文转成拼音(支持多音字输出)相关推荐

  1. C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母

    汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual S ...

  2. 输入中文转换成拼音首字母

    1.输入中文转换成拼音首字母.  需要的maven 工具包 <dependency><groupId>com.belerweb</groupId><artif ...

  3. 将中文转换成拼音的组件类的pinyin

    ---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- 1.增加对不同编码格式文本的支持,同时增加编 ...

  4. pypinyin |将得到的中文转化成拼音形式的字符串(详细过程+代码)

    为了获得所爬数据对应的网页url,我要将输入的城市中文名转换成对应拼音形式 如:输入"重庆",我需要的到的是'chongqing' 过程描述: 1.重庆->['chong', ...

  5. 意外收获:如何将中文转成拼音

    Domino群内朋友共享了这个我一直认为很难实现的源码,中文转成拼音这个非常棒的功能:在相关性搜索,按拼音排序时作用非常大.在此我感谢恋猪明,red.rose和YM的无私奉献.特此我已上载至资源内,下 ...

  6. php实现拼音转中文,PHP将中文转换成拼音的方法

    PHP将中文转换成拼音的方法 发布时间:2020-06-24 14:33:31 来源:亿速云 阅读:90 作者:Leah 这篇文章运用简单易懂的例子给大家介绍PHP将中文转换成拼音的方法,代码非常详细 ...

  7. php怎么把中文转,php如何把中文转换成拼音

    php把中文转换成拼音的方法:首先在encode方法中传进两个参数,分别为"$utf8Data"和"$sRetFormat",第一个参数为"传入的中文 ...

  8. 中文转化成拼音首写字母

    要实现这样一种效果,当我输入名称是中文时,代码名称会自动获取输入中文的首写字母: 实现思路是这样的:名称输入完毕候,当焦点移出时,代码名称自动获取.这其中引入汉字转拼音开源组件 NPinyin. 下面 ...

  9. piinyin4j的使用 把中文转成拼音

    在有些程序中需要把汉字转成拼音(比如一些城市编码或者其他的编码是拼音组成的) 使用该工具类就可以直接封装 非常的方便 1)导入该工具类所需的jar包 点击打开链接(直接点开链接) 2)新建一个汉字转拼 ...

最新文章

  1. Static interface methods are only supported starting with Android N (--min-api 24): void okhttp3.log
  2. excel函数FREQUENCY、COUNTIFS、COUNTIF
  3. JavaWeb:AJAX
  4. 一次高烧期间的感悟……
  5. 07丨切片集群:数据增多了,是该加内存还是加实例
  6. Unity3D学习笔记(七):叉乘和四元素
  7. 2064: 分裂 - BZOJ
  8. rstudio和matlab,R语言与matlab循环时间对比
  9. (26) CSS3 2D转换transform
  10. C# 解析Excel中的那些事儿
  11. 智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码
  12. SHA1算法原理(转载)
  13. 阿里云服务安装与卸载rabbitmq
  14. C# 判断电脑是否装Arcgis软件
  15. springboot jsonp 跨域请求,springboot使用jsonp跨域
  16. 机考[51 - 60]
  17. XcodeBoost
  18. django自带模板使用及语法
  19. HDU--2602--Bone Collector 【01背包】
  20. STM32 FMPI2C 简单访问代码

热门文章

  1. 用ajax做级联操作,学习笔记之MVC级联及Ajax操作
  2. 电子技术基础(三)__第1章 并联电路的电阻_电阻的分流公式
  3. Office2016零售版(Retail)转批量授权(VOL)
  4. ​ leetcode 460. LFU 缓存 hard​
  5. MySQL必知必会(1)
  6. Android 更换App图标
  7. 3dmax 毛发、毛头麻绳
  8. vue2.0 日历日程表 ,可进行二次开发.
  9. 如何实现excel服务器的用户管理和认证管理
  10. 计算机主机如何睡眠,win7怎样设置电脑休眠_w7电脑设置休眠的详细步骤