在有些程序中需要把汉字转成拼音(比如一些城市编码或者其他的编码是拼音组成的) 使用该工具类就可以直接封装 非常的方便

1)导入该工具类所需的jar包

点击打开链接(直接点开链接)

2)新建一个汉字转拼音的工具类

package com.jack_Gao.utilsimport java.util.Arrays;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.exception.BadHanyuPinyinOutputFormatCombination;public class PinYin4jUtils {/*** 将字符串转换成拼音数组* * @param src* @return*/public static String[] stringToPinyin(String src) {return stringToPinyin(src, false, null);}/*** 将字符串转换成拼音数组* * @param src* @return*/public static String[] stringToPinyin(String src, String separator) {return stringToPinyin(src, true, separator);}/*** 将字符串转换成拼音数组* * @param src* @param isPolyphone*            是否查出多音字的所有拼音* @param separator*            多音字拼音之间的分隔符* @return*/public static String[] stringToPinyin(String src, boolean isPolyphone,String separator) {// 判断字符串是否为空if ("".equals(src) || null == src) {return null;}char[] srcChar = src.toCharArray();int srcCount = srcChar.length;String[] srcStr = new String[srcCount];for (int i = 0; i < srcCount; i++) {srcStr[i] = charToPinyin(srcChar[i], isPolyphone, separator);}return srcStr;}/*** 将单个字符转换成拼音* * @param src* @return*/public static String charToPinyin(char src, boolean isPolyphone,String separator) {// 创建汉语拼音处理类HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();// 输出设置,大小写,音标方式defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);StringBuffer tempPinying = new StringBuffer();// 如果是中文if (src > 128) {try {// 转换得出结果String[] strs = PinyinHelper.toHanyuPinyinStringArray(src,defaultFormat);// 是否查出多音字,默认是查出多音字的第一个字符if (isPolyphone && null != separator) {for (int i = 0; i < strs.length; i++) {tempPinying.append(strs[i]);if (strs.length != (i + 1)) {// 多音字之间用特殊符号间隔起来tempPinying.append(separator);}}} else {tempPinying.append(strs[0]);}} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {tempPinying.append(src);}return tempPinying.toString();}public static String hanziToPinyin(String hanzi) {return hanziToPinyin(hanzi, " ");}/*** 将汉字转换成拼音* * @param hanzi* @param separator* @return*/public static String hanziToPinyin(String hanzi, String separator) {// 创建汉语拼音处理类HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();// 输出设置,大小写,音标方式defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);String pinyingStr = "";try {pinyingStr = PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat,separator);} catch (BadHanyuPinyinOutputFormatCombination e) {// TODO Auto-generated catch blocke.printStackTrace();}return pinyingStr;}/*** 将字符串数组转换成字符串* * @param str* @param separator*            各个字符串之间的分隔符* @return*/public static String stringArrayToString(String[] str, String separator) {StringBuffer sb = new StringBuffer();for (int i = 0; i < str.length; i++) {sb.append(str[i]);if (str.length != (i + 1)) {sb.append(separator);}}return sb.toString();}/*** 简单的将各个字符数组之间连接起来* * @param str* @return*/public static String stringArrayToString(String[] str) {return stringArrayToString(str, "");}/*** 将字符数组转换成字符串* * @param str* @param separator*            各个字符串之间的分隔符* @return*/public static String charArrayToString(char[] ch, String separator) {StringBuffer sb = new StringBuffer();for (int i = 0; i < ch.length; i++) {sb.append(ch[i]);if (ch.length != (i + 1)) {sb.append(separator);}}return sb.toString();}/*** 将字符数组转换成字符串* * @param str* @return*/public static String charArrayToString(char[] ch) {return charArrayToString(ch, " ");}/*** 取汉字的首字母* * @param src* @param isCapital*            是否是大写* @return*/public static char[] getHeadByChar(char src, boolean isCapital) {// 如果不是汉字直接返回if (src <= 128) {return new char[] { src };}// 获取所有的拼音String[] pinyingStr = PinyinHelper.toHanyuPinyinStringArray(src);// 创建返回对象int polyphoneSize = pinyingStr.length;char[] headChars = new char[polyphoneSize];int i = 0;// 截取首字符for (String s : pinyingStr) {char headChar = s.charAt(0);// 首字母是否大写,默认是小写if (isCapital) {headChars[i] = Character.toUpperCase(headChar);} else {headChars[i] = headChar;}i++;}return headChars;}/*** 取汉字的首字母(默认是大写)* * @param src* @return*/public static char[] getHeadByChar(char src) {return getHeadByChar(src, true);}/*** 查找字符串首字母* * @param src* @return*/public static String[] getHeadByString(String src) {return getHeadByString(src, true);}/*** 查找字符串首字母* * @param src* @param isCapital*            是否大写* @return*/public static String[] getHeadByString(String src, boolean isCapital) {return getHeadByString(src, isCapital, null);}/*** 查找字符串首字母* * @param src* @param isCapital*            是否大写* @param separator*            分隔符* @return*/public static String[] getHeadByString(String src, boolean isCapital,String separator) {char[] chars = src.toCharArray();String[] headString = new String[chars.length];int i = 0;for (char ch : chars) {char[] chs = getHeadByChar(ch, isCapital);StringBuffer sb = new StringBuffer();if (null != separator) {int j = 1;for (char ch1 : chs) {sb.append(ch1);if (j != chs.length) {sb.append(separator);}j++;}} else {sb.append(chs[0]);}headString[i] = sb.toString();i++;}return headString;}public static void main(String[] args) {// pin4j 简码 和 城市编码 String s1 = "中华人民共和国"; String[] headArray = getHeadByString(s1); // 获得每个汉字拼音首字母System.out.println(Arrays.toString(headArray));String s2 ="长城" ; System.out.println(Arrays.toString(stringToPinyin(s2,true,",")));String s3 ="长";System.out.println(Arrays.toString(stringToPinyin(s3,true,",")));}
}

3)然后直接在所需要的地方调用该工具类的方法就好

piinyin4j的使用 把中文转成拼音相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. centos mysql lujin_MySQL中文转换成拼音的函数[zt]

    注:如果创建函数出错,试试这个 set global log_bin_trust_function_creators=TRUE; 代码如下 -- 创建汉字拼音对照临时表 CREATE TABLE IF ...

最新文章

  1. 联想618首战告捷,是战略潜力的释放还是最后的“狂欢”?
  2. 区块链数字广告项目-【DadxChain】
  3. Android studio | From Zero To One —— Hello Android
  4. PHP学习总结(数据库概念、DDL语句、DML语句)
  5. 管道符和作业控制 shell变量 环境变量配置文件
  6. alisql mysql_AliSQL 5.6.32 vs MySQL 5.7.15抢鲜测试
  7. 30分钟读懂Linux五大模块内核源码,内核整体架构设计
  8. oracle rac 成本及架构,Oracle Extended RAC 架构实战
  9. 计算机中的网络怎么共享的打印机驱动,如何连接其他电脑共享的打印机
  10. 怎么用matlab保存音频文件,Matlab用图片和音频藏文件(续)
  11. 成大事,赚大钱,都要有股永不服输的精神
  12. Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】
  13. dropdownlist下拉框变透明_Unity3D 4.x利用原生UGUI完成下拉列表DropDownList
  14. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)比赛总结
  15. uniapp App端使用高德地图
  16. matlab 编写程序,matlab语言编写程序
  17. hypermill后处理构造器安装_NX后处理直白易操作教程
  18. Java计算1到100阶乘和
  19. Arthas : 具体问题分析小册子
  20. word表格数据处理:如何给长数字添加千位分隔符?

热门文章

  1. 上林赋 汉 司马相如
  2. HTML第六次作业笔记
  3. Asterisk 电话系统的音频文件
  4. strok的实现,分割字符串
  5. windows下命令行解压zip文件
  6. 【Yngz_Miao的博客】博客导航(不断更新)
  7. 人工智能中的rl是什么意思_AI学习如何使用第二部分来创建自定义RL环境并培训代理...
  8. 爬取网易云,搜索指定歌曲,一段为期六天的心酸心累爬歌史。
  9. 游戏服务器框架之跨服(三)
  10. 凭门票 成都露天音乐公园多条摆渡车线路免费坐