JAVA获取字符串首字拼音或者全部拼音,用的是pinyin4j。

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;public class Pinyin4jUtil {/*** 提取首个字符的首字母,其他返回** * @param str* @return String*/public static String getFirstPinYinHeadChar(String str) {StringBuffer pybf = new StringBuffer();char word = str.charAt(0);// 提取汉字的首字母String[] pinyinArray;// 是否是因为字母if (word > 128) {pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);// 如果不是汉字,就返回*if (pinyinArray != null) {pybf.append(pinyinArray[0].charAt(0));} else {pybf.append("*");}} else {// 是字母直接返回,不是返回*if (Character.isLetter(word)) {pybf.append(word);} else {pybf.append("*");}}// 全部返回大写return pybf.toString().toUpperCase();}/*** 将汉字转换为全拼* * @param src* @return String*/public static String getPinYin(String src) {char[] t1 = null;t1 = src.toCharArray();// System.out.println(t1.length);String[] t2 = new String[t1.length];// System.out.println(t2.length);// 设置汉字拼音输出的格式HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);t3.setVCharType(HanyuPinyinVCharType.WITH_V);String t4 = "";int t0 = t1.length;try {for (int i = 0; i < t0; i++) {// 判断是否为汉字字符// System.out.println(t1[i]);if (Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);// 将汉字的几种全拼都存到t2数组中t4 += t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后} else {// 如果不是汉字字符,直接取出字符并连接到字符串t4后t4 += Character.toString(t1[i]);}}} catch (BadHanyuPinyinOutputFormatCombination e) {// TODO Auto-generated catch blocke.printStackTrace();}return t4;}/*** 提取每个汉字的首字母* * @param str* @return String*/public static String getPinYinHeadChar(String str) {String convert = "";for (int j = 0; j < str.length(); j++) {char word = str.charAt(j);// 提取汉字的首字母String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);if (pinyinArray != null) {convert += pinyinArray[0].charAt(0);} else {convert += word;}}return convert;}/*** 将字符串转换成ASCII码* * @param cnStr* @return String*/public static String getCnASCII(String cnStr) {StringBuffer strBuf = new StringBuffer();// 将字符串转换成字节序列byte[] bGBK = cnStr.getBytes();for (int i = 0; i < bGBK.length; i++) {// System.out.println(Integer.toHexString(bGBK[i] & 0xff));// 将每个字符转换成ASCII码strBuf.append(Integer.toHexString(bGBK[i] & 0xff) + " ");}return strBuf.toString();}/*** 汉字转换位汉语拼音首字母,英文字符不变,特殊字符丢失 支持多音字,生成方式如(长沙市长: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;}}

下面是使用到的jar包:

pinyin4j-2.5.0.jar

http://download.csdn.net/detail/kokjuis/9672141  点击打开链接

JAVA获取字符串首字拼音和全拼相关推荐

  1. JAVA获取汉字首字母拼音

    JAVA获取汉字首字母拼音 jar导入 工具类 jar导入 <dependency><groupId>com.belerweb</groupId><artif ...

  2. JS实现获取汉字首字母拼音、全拼音及混拼音的方法

    本文实例讲述了JS实现获取汉字首字母拼音.全拼音及混拼音的方法.分享给大家供大家参考,具体如下: 这里需要用到一个js获取汉字拼音的插件,可点击此处本站下载. 运行效果如下: 完整示例代码: ? 1 ...

  3. 获取字符串首字母拼音

    #region 获取字符串首字母拼音/// <summary>/// 获得一个字符串的汉语拼音码,XDesigner编制/// </summary>/// <param ...

  4. PHP获取字符串首字母拼音类

    getInitialsOfName.php <?php/*** 获取字符串首字母拼音类* 英文字串:不变返回(包括数字) abc123 => abc123* 中文字符串:返回拼音首字符 王 ...

  5. java实现汉字文字转换拼音(全拼和简拼)工具包

    java实现汉字文字转换拼音(全拼和简拼)工具包 话不多说,直接上代码,调用即可 /** * 得到 全拼 * @param str * @return */public static String g ...

  6. Java获取名字首字母拼音并按名字拼音分组工具类

    1. maven <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j< ...

  7. C# 根据汉字获取首字母拼音或全拼

    第一种方法.简单快速 若是求快,可以用下面这个方法,不需要什么库,直接写就完事 调用GetPYstring ,传入"世界和平",返回"SJHP" public ...

  8. 关键字的首字母拼音和全拼搜索

    /*** @author ChineseSpelling* 所有全拼集合 汉字转拼音 使用工具类*/ public class ChineseSpelling {private static int[ ...

  9. java 获取拼音码_Java获取汉字拼音的全拼和首拼实现代码分享

    import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; import java ...

最新文章

  1. Git Bash Here 中文显示乱码,有遮挡, 的处理方法
  2. 发布了!2020年AI人才发展报告,最高补助1000万!
  3. POJ-2386-Lake Counting
  4. python 发送邮件解决所有乱码问题
  5. hdu1058(dp||优先队列)
  6. ZOJ 1048|POJ 1004|HDU1064 Financial Management
  7. 写出一段代码将链表中的两个节点位置互换位置_面试 leetcode 算法专题系列(二)—— 链表...
  8. 创建mysql数据库图解_mysql数据库怎么创建外键?(图文+视频)
  9. 怎么用计算机弹c哩c哩,计算器音乐c哩c哩乐谱 | 手游网游页游攻略大全
  10. UIScrollView加约束
  11. windows获取cmd回显以及获取路径
  12. 阿里云 ECS Ubuntu 14.04 无法访问之磁盘 IO 跑满问题排查
  13. 国内外组态软件对比分析(InTouch、WinCC、iFix、iNeuOS)
  14. 关于AD9各种布线总结(很详细)
  15. html调用矢量小图标的方法,Web 前端矢量小图标的使用方法
  16. 提前体验饱受期待的Windows Terminal
  17. 【win10】设置电脑固定IP,解除固定IP
  18. 爱普生发票打印机 每次连续打印发票,都跳页,中间一张空白
  19. 【论文笔记】Neural Machine Translation by Jointly Learning to Align and Translate
  20. Fite-C02-1班成员学习进度记录

热门文章

  1. ArcGIS简单的三维演示
  2. Python爬取各种类型网站数据(视频,图片居多)
  3. R语言survival包Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、drop1函数计算cox回归模型自变量似然比检验值、删除冗余变量重新构建cox模型
  4. windows下mysql8初始化
  5. Qt开发技术:Qt富文本(一)富文本介绍、文档结构
  6. mysql免费常用编译器_20款最好的免费的IDES和编辑器
  7. 华为手机在计算机里怎么隐藏游戏,华为手机游戏模式怎么设置
  8. house robbers
  9. Ubuntu Core 将支持物联网 Matter
  10. 【转载】Shell图形化监控网络流量