工具类-汉字转为汉语拼音首字母
汉字转换为汉语拼音首字母,英文字符不变,特殊字符丢失 支持多音字,生成方式如(长沙市长:cssc,zssz,zssc,cssz)
首先需Pinyin4j的jar包,代码如下,可直接使用
public class Pinyin4jUtil {/*** 汉字转换位汉语拼音首字母,英文字符不变,特殊字符丢失 支持多音字,生成方式如(长沙市长:cssc,zssz,zssc,cssz)** @param chines 汉字* @return 拼音*/public static String converterToFirstSpell(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].charAt(0));if (j != strs.length - 1) {pinyinName.append(",");}}}// else {// pinyinName.append(nameChar[i]);// }} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}} else {pinyinName.append(nameChar[i]);}pinyinName.append(" ");}// return pinyinName.toString();return parseTheChineseByObject(discountTheChinese(pinyinName.toString()));}/*** 汉字转换位汉语全拼,英文字符不变,特殊字符丢失* 支持多音字,生成方式如(重当参: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;}/*** 解析并组合拼音,对象合并方案** @return*/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;}public static void main(String[] args) {String str = "长大";/* String pinyin = Pinyin4jUtil.converterToSpell(str);System.out.println(str + " pin yin :" + pinyin);*/String pinyin = Pinyin4jUtil.converterToFirstSpell(str).split(",")[0];System.out.println(str + " short pin yin :" + pinyin);}}
工具类-汉字转为汉语拼音首字母相关推荐
- java首字母大写工具类_StringUtil 字符串工具类
将一个字符串的首字母改为大写或者小写
将一 联合开发网 - pudn.com...
StringUtil 所属分类:Java编程 开发工具:Java 文件大小:2KB 下载次数:14 上传日期:2011-12-26 09:50:51 上 传 者:曲欣亮 说明: 字符串工具类 将一个 ...
- 项目小方便--取汉语拼音首字母和字符串比较函数
壹:取汉语拼音首字母的函数 在做工程项目建模的时候,我们时常用字段的汉语拼音首字母来定义列名;如果手工取下来将是一件非常烦人的工作;此函数就用来取汉字的汉语拼音首字母,解决我们头疼的问题 代码如下: ...
- 汉语拼音首字母处理工具类
文章目录 1.正则表达式来判断字符串中是否包含字母 2.获得汉字首字母(通常用作通讯录检索) 3.获得汉语拼音首字母简称 4.将字符串中的中文转化为拼音,英文字符不变 5.汉字转换位汉语拼音首字母,英 ...
- java 汉字 字母_JAVA获取中文汉字字符串拼音首字母,英文字符不变的工具类
java在处理项目需求时,有时需要排序,尤其是中文名字按0-9,A-Z进行首字母排序,这时候就需要首先要得到中文字符串的首字母,然后按照字母顺序进行排序,不多说,直接上代码,看java如何获取中文字符 ...
- java汉字转拼音和获取汉语拼音首字母
需要加入的jar包 <!-- pinyin4j --><dependency><groupId>com.belerweb</groupId><ar ...
- java汉字转换拼音,获取汉字串拼音首字母
首先要下载 pinyin4j 的jar包 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...
- C# 获取汉字的拼音首字母(转)
原文:https://blog.csdn.net/younghaiqing/article/details/62417269 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicod ...
- C# 获取汉字的拼音首字母和全拼(含源码)
C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手 ...
- (转)C# 获取汉字的拼音首字母和全拼(含源码)[A]
https://blog.csdn.net/younghaiqing/article/details/62417269 C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是 ...
最新文章
- 惊了!计算机视觉还可以这么玩?
- *:教育产品 规范销售
- 用python画玫瑰花简单-利用python的turtle库画一朵简单的玫瑰花,并添加文字
- github密码格式_如何使用GitHub构建一个简单的网页 (不用框架版本)
- 【c++】13.必须用指针取值的情况.md
- lsof查看占用高_查看端口占用情况lsof,并关闭对应进程kill
- 解决IE10以下对象不支持“bind“属性或方法
- a频繁连接不上redis_连接不到redis Caused by:..._慕课问答
- 电脑键盘练习_三款神器!超越键盘飞毛腿!
- gradle命令无法识别
- 半个月可以写出一个电脑操作系统吗?
- 单选按钮用法, 选择的值
- 语言的学习 —— 西班牙语(español)
- 设计模式(三) 工厂模式
- Ogre学习教程:Ogre1.8.1+VS2010环境配置2(转)
- Python问题解决6:使用jupyter notebook时安装第三方库提示升级pip,pip升级不成功一直报错
- JS内功修炼-基础篇
- 聚焦“教-学-评-测-练-管一体化”,推动新型人才培养
- 总结:云原生架构理解
- 牛客网-精华专题-前端校招面试题目合集
热门文章
- 高性能网络编程(三):下一个10年,是时候考虑C10M并发问题了
- VC++中unhandled exception的处理
- 数据报表类(BI)项目测试应该如何去啃?
- 修改服务器tcp会话数,windows2012服务器TCP连接数
- javascript设计模式-策略模式(Strategy)
- python使用logging打印信息到日志文件中
- 直方图匹配(直方图规定化)
- HTML5 新增的结构元素——能用不代表用对了
- python功率谱,直接法和间接法
- dp 这个单位是安卓发明的么?为什么 px=dp*(dpi/160)?