piinyin4j的使用 把中文转成拼音
在有些程序中需要把汉字转成拼音(比如一些城市编码或者其他的编码是拼音组成的) 使用该工具类就可以直接封装 非常的方便
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的使用 把中文转成拼音相关推荐
- C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual S ...
- 输入中文转换成拼音首字母
1.输入中文转换成拼音首字母. 需要的maven 工具包 <dependency><groupId>com.belerweb</groupId><artif ...
- 意外收获:如何将中文转成拼音
Domino群内朋友共享了这个我一直认为很难实现的源码,中文转成拼音这个非常棒的功能:在相关性搜索,按拼音排序时作用非常大.在此我感谢恋猪明,red.rose和YM的无私奉献.特此我已上载至资源内,下 ...
- php实现拼音转中文,PHP将中文转换成拼音的方法
PHP将中文转换成拼音的方法 发布时间:2020-06-24 14:33:31 来源:亿速云 阅读:90 作者:Leah 这篇文章运用简单易懂的例子给大家介绍PHP将中文转换成拼音的方法,代码非常详细 ...
- 将中文转换成拼音的组件类的pinyin
---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- 1.增加对不同编码格式文本的支持,同时增加编 ...
- php怎么把中文转,php如何把中文转换成拼音
php把中文转换成拼音的方法:首先在encode方法中传进两个参数,分别为"$utf8Data"和"$sRetFormat",第一个参数为"传入的中文 ...
- pypinyin |将得到的中文转化成拼音形式的字符串(详细过程+代码)
为了获得所爬数据对应的网页url,我要将输入的城市中文名转换成对应拼音形式 如:输入"重庆",我需要的到的是'chongqing' 过程描述: 1.重庆->['chong', ...
- 中文转化成拼音首写字母
要实现这样一种效果,当我输入名称是中文时,代码名称会自动获取输入中文的首写字母: 实现思路是这样的:名称输入完毕候,当焦点移出时,代码名称自动获取.这其中引入汉字转拼音开源组件 NPinyin. 下面 ...
- centos mysql lujin_MySQL中文转换成拼音的函数[zt]
注:如果创建函数出错,试试这个 set global log_bin_trust_function_creators=TRUE; 代码如下 -- 创建汉字拼音对照临时表 CREATE TABLE IF ...
最新文章
- 联想618首战告捷,是战略潜力的释放还是最后的“狂欢”?
- 区块链数字广告项目-【DadxChain】
- Android studio | From Zero To One —— Hello Android
- PHP学习总结(数据库概念、DDL语句、DML语句)
- 管道符和作业控制 shell变量 环境变量配置文件
- alisql mysql_AliSQL 5.6.32 vs MySQL 5.7.15抢鲜测试
- 30分钟读懂Linux五大模块内核源码,内核整体架构设计
- oracle rac 成本及架构,Oracle Extended RAC 架构实战
- 计算机中的网络怎么共享的打印机驱动,如何连接其他电脑共享的打印机
- 怎么用matlab保存音频文件,Matlab用图片和音频藏文件(续)
- 成大事,赚大钱,都要有股永不服输的精神
- Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】
- dropdownlist下拉框变透明_Unity3D 4.x利用原生UGUI完成下拉列表DropDownList
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)比赛总结
- uniapp App端使用高德地图
- matlab 编写程序,matlab语言编写程序
- hypermill后处理构造器安装_NX后处理直白易操作教程
- Java计算1到100阶乘和
- Arthas : 具体问题分析小册子
- word表格数据处理:如何给长数字添加千位分隔符?