JAVA pinyin4j 中文多音字转拼音转字母大写;

class PinyinTool {

/*** 解析并组合拼音,对象合并方案** @return*/
private static String[] parseTheChineseByObject(List<Map<String, Integer>> list) {String[] resultStr=new String[]{};Map<String, Integer> first = null; // 用于统计每一次,集合组合数据// 遍历每一组集合for (int i = 0; i < list.size(); i++) {// 每一组集合与上一次组合的MapMap<String, Integer> temp = new Hashtable<String, Integer>();Map<String, Integer> daxTemp = new Hashtable<String, Integer>();// 第一次循环,first为空if (first != null) {// 取出上次组合与此次集合的字符,并保存for (String s : first.keySet()) {for (String s1 : list.get(i).keySet()) {if (!Character.isLowerCase(s.charAt(0))){String dax="";//拼音转大写String daxStr = s1.toUpperCase().charAt(0) + s1.substring(1);if (daxStr.length() > 1) {dax += daxStr.subSequence(0, 1);} else {dax += daxStr;}dax=s+dax;daxTemp.put(dax, 2);//拼音大写continue;}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;String dax="";//拼音转大写String daxStr = s.toUpperCase().charAt(0) + s.substring(1);if (daxStr.length() > 1) {dax += daxStr.subSequence(0, 1);} else {dax += daxStr;}daxTemp.put(dax, 2);//拼音大写temp.put(str, 1);}}// 保存组合数据以便下次循环使用if (temp != null && temp.size() > 0) {first = temp;first.putAll(daxTemp);}}if (first != null) {// 遍历取出组合字符串for (String str : first.keySet()) {//取出大写字符串if(!Character.isLowerCase(str.charAt(0))){resultStr[0] += (str + ",");}resultStr[1] += (str + ",");}}if (resultStr[0].length() > 0) {resultStr[0] = resultStr[0].substring(0, resultStr[0].length() - 1);resultStr[1] = resultStr[1].substring(0, resultStr[1].length() - 1);//大写字符串}return resultStr;
}/*** 汉字转换位汉语全拼,英文字符不变,特殊字符丢失* 支持多音字,生成方式如(重当参:zhongdangcen,zhongdangcan,chongdangcen* ,chongdangshen,zhongdangshen,chongdangcan)** @param chines*            汉字* @return 拼音*/
public static String[] converterToSpell(String chines) {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();return parseTheChineseByObject(discountTheChinese(pinyinName.toString()));
}/*** 去除多音字重复数据** @param theStr* @return*/
private static List<Map<String, Integer>> discountTheChinese(String theStr) {// 去除重复拼音后的拼音列表List<Map<String, Integer>> mapList = new ArrayList<Map<String, Integer>>();// 用于处理每个字的多音字,去掉重复Map<String, Integer> onlyOne = null;String[] firsts = theStr.split(" ");// 读出每个汉字的拼音for (String str : firsts) {onlyOne = new Hashtable<String, Integer>();String[] china = str.split(",");// 多音字处理for (String s : china) {Integer count = onlyOne.get(s);if (count == null) {onlyOne.put(s, new Integer(1));} else {onlyOne.remove(s);count++;onlyOne.put(s, count);}}mapList.add(onlyOne);}return mapList;
}

}

JAVA pinyin4j 中文多音字转拼音转字母大写相关推荐

  1. PHP将中文字符转为拼音/首字母大写/或其他连接符

    PHP将中文字符转为拼音/首字母大写/或其他连接符 项目中遇到需要将客户的姓名转为首拼并且大写的要求, 提出解决办法 首先建立一个汉字转拼音的类 class PinYin {private $pyli ...

  2. java将汉字转成拼音首字母大写字母_java 根据汉字生成拼音全拼或拼音首字母的示例...

    1.情景展示 java 根据中文生成对应的拼音 2.准备工作 所需jar包:pinyin4j-2.5.0.jar 3.解决方案 导包 import net.sourceforge.pinyin4j.P ...

  3. java将汉字转成拼音首字母大写字母_java实现将汉字转为首字母、拼音

    本文转自java实现将汉字转为拼音 作者itRed 本人仅稍作整理,并提出一些问题.问题的话暂时没时间处理,等以后有时间了再更新. 测试参数 String info="汉字转换为拼音&quo ...

  4. JS输入中文自动获取拼音首字母大写

    输入中文时,自动获取首字母大写 1.安装插件pinyin-pro npm install pinyin-pro 2.引入 import { pinyin } from 'pinyin-pro'; 3. ...

  5. java将汉字转成拼音首字母大写字母_Java 将汉字转换为拼音并取首字母大写

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先需要引入pinyin4j-2.5.0.jar 在定义一个servlet.Java的类,写一个Converting方法 实例代码详解如下: public ...

  6. mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序

    mysql表中文字段提取拼音首字母 SELECT a.提取字段, IFNULL(ELT(INTERVAL (CONV(HEX(left(CONVERT(a.提取字段 USING gbk), 1)), ...

  7. java获取中文字符串汉语拼音和首字母

    业务需求:将用户中文名字根据拼音首字母分类排序 直接上代码: 引入依赖: <dependency><groupId>com.belerweb</groupId>&l ...

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

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

  9. mysql 拼音查询_mysql中文字段转拼音首字母,以及中文拼音模糊查询

    创建存储过程,将中文字段转拼音首字母 CREATE DEFINER=`root`@`%` FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS var ...

最新文章

  1. yum安装php和apache先装哪个,yum如何安装apache与php
  2. JavaScript--事件模型
  3. sqoop同步hdfs与mysql端口_使用Sqoop将数据在HDFS与MySQL互导
  4. 科普:String hashCode 方法为什么选择数字 31 作为乘子
  5. Linux学习之系统编程篇:线程同步的引出和思想
  6. java获取上周一_java 获取昨天,上个星期一,本月开始时间戳,怎么写呢?
  7. Java讲课笔记33:多线程概述与线程创建
  8. 王传福凭啥“抛弃”燃油车?
  9. HTML中的表格和表单控件详解
  10. 2014年0417的工作计划
  11. 小冰与老东家微软达成战略合作,并宣布数亿元Pre-A轮融资,将全面开展商业化
  12. Python爬虫 --- 2.2 Scrapy 选择器的介绍
  13. Java设计模式透析之 —— 适配器(Adapter)
  14. 【等价变换】—— 指数对数函数
  15. echarts 自定义鼠标悬停展示
  16. 2017机器人与自动化领域SCI期刊最新影响因子
  17. 收藏!这37个自学网站,一年让你省下十几万
  18. Open3d数据滤波和点云分割
  19. 使用Certbot配置SSL证书【ubuntu系统】
  20. ..\OBJ\PRESSURE_SYSTEM.axf: Error: L6218E: Undefined symbol FLASH_ErasePage (referred from flash.o).

热门文章

  1. 2012 5.4青年节--上海出差
  2. 如何在线进行PDF文档压缩?
  3. Idea 激活(MAC/WIN)使用教程
  4. 【一问一答】错题库整理
  5. Kinetics400/600/700数据集免费下载
  6. 苹果xsmax怎么开机_粉丝水洗苹果XS MAX手机不开机,Face ID报废,你还这么做吗?...
  7. 如何用cmd链接linux,如何在Windows cmd 下使用linux的命令
  8. 智慧档案馆档案库房一体化平台建设
  9. git 本地分支和远端分支有什么区别?
  10. 如何使用html实现在线秒表,javascript实现一款好看的秒表计时器