业务需求:将用户中文名字根据拼音首字母分类排序

直接上代码:

引入依赖:

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

创建工具类:

import cn.newi.common.util.StringUtil;
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 PinyinUtils {/** * 将字符串中的中文转化为拼音,英文字符不变 *  * @param inputString *            汉字 * @return */  public static String getPingyin(String inputString) {  HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();  format.setCaseType(HanyuPinyinCaseType.LOWERCASE);  format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  format.setVCharType(HanyuPinyinVCharType.WITH_V);  String output = "";  if (!StringUtil.isEmpty(inputString) && !"null".equals(inputString)) {  char[] input = inputString.trim().toCharArray();  try {String notChsTmp = "";for (int i = 0; i < input.length; i++) {if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {if (!StringUtil.isEmpty(notChsTmp)){output += notChsTmp;output += " ";  notChsTmp = "";}String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);  output += temp[0];  if (i < input.length - 1){output += " ";  }} else {notChsTmp += java.lang.Character.toString(input[i]);  }}//循环外面如果最后一个不是中文,最后补加上非中文字符串if (!StringUtil.isEmpty(notChsTmp)){output += notChsTmp;notChsTmp = "";}} catch (BadHanyuPinyinOutputFormatCombination e) {  e.printStackTrace();  }  }return output;  }  /** * 汉字转换位汉语拼音首字母,英文字符不变 *  * @param chines *            汉字 * @return 拼音 */  public static String getShoupin(String chines) {  String pinyinName = "";  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 {  pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);  } catch (BadHanyuPinyinOutputFormatCombination e) {  e.printStackTrace();  }  } else {  pinyinName += nameChar[i];  }  }  return pinyinName;  }  public static void main(String[] args) {System.out.println(getPingyin("张三001"));System.out.println(getShoupin("张三001"));}
}

结果:

java获取中文字符串汉语拼音和首字母相关推荐

  1. asp.net 获取汉字字符串的拼音首字母,含多音字

    需求:在很多时候数据查询的时候,我们希望输入某个人姓名的拼音首字母进行查询,例如"潘长江",输入"pcj",就能搜索潘长江相关信息. 实现: #region 获 ...

  2. 匹配中文字符串的拼音首字母或英文字符串的首字母缩写

    原始需求: 有联系人名字为'张三'.'张三丰',搜索'ZS'可以通过系统提供的Contacts.CONTENT_FILTER_URI搜索到.但是匹配字符串高亮时,无法智能将'张三'高亮. 细化需求 需 ...

  3. java获取中文拼音首字母

    import net.sourceforge.pinyin4j.PinyinHelper;public class PinyinHelperUtil {/*** 得到中文首字母(中国 -> ZG ...

  4. PinYin4j的基本使用 Java获取中文转拼音、获取中文拼音的首字母缩写

    前言 在实际开发中,可能会遇到根据用户输入的中文拼音首字母缩写,来查询对应数据的功能需求,本文将提供一个操作中文转拼音.获取拼音首字母的工具类CV即用. 一.PinYin4j 简介 : pinyin4 ...

  5. .net core通过PinYinConverterCore实现汉字转拼音,获取中文字符串首字母

    文章目录 一.事故现场 二.解决方法 1.安装方法 2.代码示例 #中文转拼音 #获取中文字符串首字母 一.事故现场 项目之前使用的.net framework,可以通过引用 Microsoft.In ...

  6. java中英文汉语混合排序_Java编程实现中英混合字符串数组按首字母排序的方法...

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷 ...

  7. vue提取字符串中中文汉字的大写首字母

    vue提取字符串中中文汉字的大写首字母 1.需求背景 最近开发vue项目,在关于药品的项目中有个需求是要提取药品中文名称的首字母组成拼音码,例如:六味地黄丸提取首字母后是LWDHW. 解决方案 这里需 ...

  8. java中英文混合排序_Java编程实现中英混合字符串数组按首字母排序的方法

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷 ...

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

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

最新文章

  1. python编码与存储读取数据(数组字典)
  2. 总结Java访问权限
  3. RedLock 实现分布式锁
  4. mysql忘记密码恢复
  5. Centos7下安装python3
  6. 企业要想迅速壮大,不仅需要大量的人才
  7. 老王讲设计模式(三)——单例模式
  8. 电脑下边的任务栏不见了_Win7系统电脑任务栏经常自动消失不见的解决方法
  9. 绝对式编码器的ssi协议 stm32 hal
  10. u8系统计算机上启动不了,用友erp u8装好后为何启动不了
  11. Windows Server 2012 R2 安装IIS
  12. 基于开源方案构建统一的文件在线预览与office协同编辑平台的架构与实现历程
  13. c51单片机期末复习个人总结1基础知识
  14. 刷卡机显示服务器连接失败,pos密码错误_POS机常见故障代码解释
  15. linux总复习(二)
  16. Quartus II 13.0sp1 (64-bit)使用教程
  17. Kafka设计解析(十三)Kafka消费组(consumer group)
  18. 软件工程---5.系统建模
  19. 计算机网络校园网建设设计摘要,计算机网络专业校园网建设设计.doc
  20. 织梦滚石v3.0导航网站源码+测试版

热门文章

  1. FS2712A单片机可替换松翰SN8P2711
  2. 旭日x3派个人配置总结(ubuntu server + xrdp)
  3. 还在用Windows虚拟机?快来试试Windows自带的Sandbox吧!
  4. 符号三角形问题(回溯)
  5. 腾讯大王卡 蚂蚁宝卡 区别 哪个好
  6. bcs转10 c语言,ARM汇编转C语言 - ARM技术论坛-ARM嵌入式论坛-人气最火爆ARM学习论坛 - 21ic电子技术开发论坛...
  7. 几个比较好看的几个颜色
  8. 推荐:雨林木风Linux
  9. 数字水印技术研究综述
  10. java字符串转日期_在java中如何将一个字符串转换为日期?