工具类

package com.kayo.bos.utils;import 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*/@SuppressWarnings("deprecation")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,",")));}
}//pom文件导入坐标<!-- 导入pinyin4j --><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency>

引入maven坐标

        <!-- 导入pinyin4j --><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency>

PinYin4j使用相关推荐

  1. Java pinyin4j 汉字转拼音包括——多音字

    Java汉字转拼音(包括多音字) 有个需求需要把汉字转拼音,我的小伙伴推荐用Unicode官方的包:下载有些慢. 实际中用了Java工具包:pinyin4j解决 可以转汉字,多音字,多音字的地方要求不 ...

  2. 浅析pinyin4j源码 简单利用pinyin4j对中文字符进行自然排序(转)

    pinyin4j项目  官网地址 http://pinyin4j.sourceforge.net/ 我们先把资源下载下来,连同源码和jar包一起放入工程.如下图: 接下来在demo包下,我们写一个测试 ...

  3. Java Pinyin4j(汉字转拼音)

    Pinyin4j.jar包下载 具体使用: public class Client {public static void main(String[] args) throws BadHanyuPin ...

  4. [转] android 中 pinyin4j的使用

    pinyin4j是一个功能强悍的汉语拼音工具包,主要是从汉语获取各种格式和需求的拼音,功能强悍,下面看看如何使用pinyin4j. 本人以前用AscII编码提取工具,效果不理想,现在用pinyin4j ...

  5. 汉语转拼音pinyin4j

    分享一个将汉语转成拼音的工具包:pinyin4j-2.5.0.jar,下载地址:http://download.csdn.net/detail/abc_key/7629141 使用例如以下代码 imp ...

  6. android 汉字转拼音pinyin4j包

    android 汉字转拼音pinyin4j包 转载于:https://www.cnblogs.com/longhs/p/3148276.html

  7. POI批量导入及一键上传ocupload和pinyin4j组件的使用案例

    主要讲解四点: 快递员批量作废功能(重点,本质上是快递员的批量修改操作) 一键上传.POI解析Excel.pinyin4j(会用) 代码重构:优化模型驱动和优化分页代码(理解) 定区添加.带条件分页查 ...

  8. Pinyin4j中文字符和拼音之间的转换

    主要功能点 中文转化为拼音码 获得中文首字母 package com.yhy.springcloud.predicate;import net.sourceforge.pinyin4j.PinyinH ...

  9. 区域数据导入功能(pinyin4J使用)

    pinyin4J <!-- 引入pinyin4J的依赖 --> <dependency><groupId>com.belerweb</groupId>& ...

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

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

最新文章

  1. ACMNO.39 分解质因数 求出区间[a,b]中所有整数的质因数分解。蓝桥杯训练!
  2. 基于GeoMipmap的地形系统。
  3. Java黑皮书课后题第6章:**6.24(显示当前日期和时间)程序清单2-7显示当前时间。改进这个例子,显示当前的日期和时间。程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路
  4. hihoCoder #1467 : 2-SAT·hihoCoder音乐节
  5. 前端学习(1407):多人管理27代码优化
  6. CSS中文档流之普通流,浮动及定位、浮动特性及清除浮动的方式、定位模式,子绝父相搭配定位方式、z-index层级
  7. Java中的垃圾回收原理
  8. java List和数组转换
  9. 运行stam 遇到的问题:
  10. 在verilog中调用VHDL模块
  11. 【三次握手、四次挥手流程】及【长短链接区别】
  12. shell脚本编写_shell脚本编写事例(dhcp自动安装和自动配置)
  13. php录音功能,h5做出网页录音功能
  14. 蔡学镛:KPI心理学
  15. 502 java_502 Bad Gateway
  16. 基于html + css + js完成淘宝网首页效果
  17. Laravel 博客开发|Laravel 项目中安装和使用 Bulma
  18. 致远OA 组合getshell
  19. 现有列表记录商品名称和价格如下:‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬要求用户输入总资产,例如: 20000,输出所有商品序号和商品列表,每行
  20. Tomcat启动时报错:A child container failed during start解决方案-clean

热门文章

  1. Hive内部表及外部表
  2. 【机器学习数学基础】——3、概率论与数理统计
  3. 即见即听即所得,网页视频音乐下载利器-收费音乐免费下
  4. HDU 4997 Biconnected (状态压缩DP)
  5. 通达oa php冲突,通达OA某版本系统存在通用SQL注入(附注射技巧)
  6. 无线网如何访问服务器公共盘,如何访问双频无线路由器网络共享服务器
  7. mail命令发送html格式的电子邮件
  8. 关于css中em的值
  9. 免费的系统压力测试方法/工具有哪些?企业如何做好软件压力测试
  10. C++无法打开FDB文件