1、在pom文件中导入pinyin4j的依赖

<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version>
</dependency>

2、汉字转拼音实现方法
2.1 获取首拼

public static String getStartPinYin(String str){if (StringUtils.isEmpty(str)){return "#";}//获取第一个字母或者汉子char charAt = str.charAt(0);for (int i = 0;i<str.length();i++){char c = str.charAt(i);if (StringUtils.isAlpha(c+"")){charAt = c;break;}}if (Character.isLowerCase(charAt) || Character.isUpperCase(charAt)){return Character.toUpperCase(charAt)+"";}HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();format.setCaseType(HanyuPinyinCaseType.LOWERCASE);format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);String pinYin = null;try {pinYin = PinyinHelper.toHanYuPinyinString(str, format, "", false);} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {//badHanyuPinyinOutputFormatCombination.printStackTrace();return "#";}if (StringUtils.isEmpty(pinYin)){return "#";}return pinYin.substring(0,1).toUpperCase();}

2.2 多音字,获取多音字的所有拼音

public static Map.Entry<String, String>  converterToSpell(String chines) {if (StringUtils.isBlank(chines)){return new AbstractMap.SimpleEntry("#", "");}StringBuffer pinyinName = new StringBuffer();char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < nameChar.length; i++) {if (nameChar[i] > 128) {try {// 取得当前汉字的所有全拼String[] strs = PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat);if (strs != null) {for (int j = 0; j < strs.length; j++) {pinyinName.append(strs[j]);if (j != strs.length - 1) {pinyinName.append(",");}}}} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {pinyinName.append(nameChar[i]);}pinyinName.append(" ");}// return pinyinName.toString();String s = parseTheChineseByObject(discountTheChinese(pinyinName.toString()));return getSortFirst(s);}private static String parseTheChineseByObject(List<Map<String, Integer>> list) {Map<String, Integer> first = null; // 用于统计每一次,集合组合数据// 遍历每一组集合for (int i = 0; i < list.size(); i++) {// 每一组集合与上一次组合的MapMap<String, Integer> temp = new Hashtable<String, Integer>();// 第一次循环,first为空if (first != null) {// 取出上次组合与此次集合的字符,并保存for (String s : first.keySet()) {for (String s1 : list.get(i).keySet()) {String str = s + s1;temp.put(str, 1);}}// 清理上一次组合数据if (temp != null && temp.size() > 0) {first.clear();}} else {for (String s : list.get(i).keySet()) {String str = s;temp.put(str, 1);}}// 保存组合数据以便下次循环使用if (temp != null && temp.size() > 0) {first = temp;}}String returnStr = "";if (first != null) {// 遍历取出组合字符串for (String str : first.keySet()) {returnStr += (str + ",");}}if (returnStr.length() > 0) {returnStr = returnStr.substring(0, returnStr.length() - 1);}return returnStr;}private static Map.Entry<String, String>  getSortFirst(String arrayStr){Map.Entry<String, String> entryMap = new AbstractMap.SimpleEntry("#", "");if (StringUtils.isNotBlank(arrayStr)){if (arrayStr.contains(",")){TreeMap<String,String> sortMap = new TreeMap<>();String[] split = arrayStr.split(",");for (int i = 0; i < split.length; i++) {//获取首字母排序sortMap.put(getStartPinYin(split[i]),split[i].toLowerCase());}Map.Entry<String, String> entry = sortMap.pollFirstEntry();return entry;}else {entryMap = new  AbstractMap.SimpleEntry(getStartPinYin(arrayStr), arrayStr);/*map.put("allPinYin",arrayStr);map.put("firstStart",getStartPinYin(arrayStr));*/}}return entryMap;}

java使用pinyin4j实现汉字到拼音转换相关推荐

  1. 基于struts2、spring、spring data jpa实现poi导入 + pinyin4j将汉字转换为拼音

    基于struts2.spring.spring data jpa实现poi导入 + pinyin4j将汉字转换为拼音 1.引入坐标到pom.xml <!-- Excel解析工具类 -->& ...

  2. pinyin4J一款非常好用的汉字和拼音转换的插件

    给大家介绍一款非常好用的汉字转拼音,进行用拼音检索相关数据的时候比较方便,就是pinyin4j插件,在eclipse里如果是maven项目,直接导入相关约束,然后导入工具类,随时根据需求调用相关方法即 ...

  3. java pinyin4j_java实现中文汉字转拼音 Pinyin4j的基本用法

    一.前言 工作中有时候会遇到汉字拼音转换的需求,例如:用户首字母搜索某个内容的时候,wzry 可搜索 王者荣耀相关的. 这里推荐使用Pinyin4j,它是sourceforge.net上的一个开源项目 ...

  4. 使用pinyin4j获取汉字的拼音和全角半角转换

    前段时间sprint分配了一项任务,查询一个bug,页面搜索汉字加上拼音的时候,无法匹配.最开始的时候以为拼音函数有问题,所以估了一下点就开始着手这件事情. 拼音工具类如下: /** * 获取汉字串拼 ...

  5. Java:利用pinyin4j实现汉字转拼音

    汉字转拼音是一个比较实用的功能,这里演示第三方库pinyin4j如何实现此功能 <!-- 导入pom依赖 --> <dependency><groupId>com. ...

  6. 通过pinyin4j将汉字转换为拼音

    pinyin4j提供了汉语转拼音的一个开源库, 支持多种拼音系统:汉语拼音. 通用拼音 .威氏拼音.注音二式.雅礼.  国语罗马字. 但是遗憾的是不支持多音字 首先下载jar包:http://piny ...

  7. .net/C# 实现汉字到拼音转换

    在进行语料库的制作过程中,一项繁琐的工作便是将已有的汉字手动转换为拼音,格式如下: Sentence m39C1041 :制约俄国.巩固西方在东欧的立足点, Sentence spell:Zhi4 y ...

  8. java 拼音转汉字_Java通过pinyin4j实现汉字转拼音

    package com.zxy.timecard.utils; import net.sourceforge.pinyin4j.PinyinHelper; /** * 拼音工具类 * @author ...

  9. java 中文分词转拼音_java 支持分词的高性能拼音转换工具, 速度是 pinyin4j 的两倍...

    java 支持分词的高性能拼音转换工具, 速度是 pinyin4j 的两倍 pinyin https://github.com/houbb/pinyin 是 java 实现的高性能中文拼音转换工具. ...

最新文章

  1. 如何快速优化机器学习的模型参数
  2. php http传参数,http - PHP的URL传参数(英文句号变成了下划线)的问题,求解释。...
  3. 程序员基本功书籍--程序员修炼之道——从小工到专家
  4. JavaScript 权威指南-学习笔记(一)
  5. 科大讯飞和百度语音平台语音识别Java调用记录
  6. MIP开发教程(二) 使用MIP-CLI工具调试MIP网页
  7. 算法第五章上机实践报告
  8. 声音均衡器怎么调好听_调音师必备:如何调出最佳人声?
  9. Java数组对象排序
  10. 新能源专属车险可在线投保 80%车主基准保费下降
  11. javascript错误_您可能会犯的javascript错误
  12. Ambisonics解释:声音工程师指南
  13. 识别网络计算机的方法,电脑未识别网络怎么办 电脑未识别解决方法【图文】...
  14. 安卓手机上最好的3个epub阅读器
  15. 微信公众号的申请以及测试号的申请
  16. 假设知道服务器IP,如何查询它绑定的域名?
  17. outlook2007 菜单灰色 不能使用的解决方案
  18. 360个人图书馆 轻松解除网页防复制
  19. 两张思维导图,让你轻松学习数据结构
  20. c语言版生日祝福程序,C语言如何编程生日快乐代码

热门文章

  1. OPNET计算机网络仿真 实验作业1 - 网络拓扑创建
  2. C#-- 控制台操作
  3. 解决禅道(ZenTao)Mysql启动不了的问题
  4. 深度学习cptn+crnn的OCR原理
  5. 实验室-关于老铁整一个社会语录api与网抑云热评api(并引入百度语音tts)
  6. 帝国cms模板如何开启支持php,帝国cms模板使用说明与技巧
  7. C++时间与日期及相关操作
  8. 眉山市职称计算机成绩,眉山市2014年第2次(4月份)全国职称计算机考试成绩.doc
  9. P-NUCLEO-IHM001 电机开发套件(一)
  10. windows下使用vscode开发stm32