原文链接:java汉字获取首字母 - 走看看

前言

在项目中很多时候我们需要获取姓名或者名称的首字母或者全拼,以用于模糊查询或者字母查询,在这里分享一个实例;供小伙伴们参考。

导入jar包

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

代码


package com.xxxx.util;import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 获取首字母工具** @author * @Date */
public class ChineseCharacterUtil {/***  获取汉字首字母或全拼大写字母** @param chinese 汉字* @param isFull  是否全拼 true:表示全拼 false表示:首字母** @return 全拼或者首字母大写字符窜*/public static String getUpperCase(String chinese,boolean isFull){return convertHanzi2Pinyin(chinese,isFull).toUpperCase();}/*** 获取汉字首字母或全拼小写字母** @param chinese 汉字* @param isFull 是否全拼 true:表示全拼 false表示:首字母** @return 全拼或者首字母小写字符窜*/public static  String getLowerCase(String chinese,boolean isFull){return convertHanzi2Pinyin(chinese,isFull).toLowerCase();}/*** 将汉字转成拼音* <P>* 取首字母或全拼** @param hanzi 汉字字符串* @param isFull 是否全拼 true:表示全拼 false表示:首字母** @return 拼音*/private static String convertHanzi2Pinyin(String hanzi,boolean isFull){/**** ^[u2E80-u9FFF]+$ 匹配所有东亚区的语言* ^[u4E00-u9FFF]+$ 匹配简体和繁体* ^[u4E00-u9FA5]+$ 匹配简体*/String regExp="^[u4E00-u9FFF]+$";StringBuffer sb=new StringBuffer();if(hanzi==null||"".equals(hanzi.trim())){return "";}String pinyin="";for(int i=0;i<hanzi.length();i++){char unit=hanzi.charAt(i);//是汉字,则转拼音if(match(String.valueOf(unit),regExp)){pinyin=convertSingleHanzi2Pinyin(unit);if(isFull){sb.append(pinyin);}else{sb.append(pinyin.charAt(0));}}else{sb.append(unit);}}return sb.toString();}/*** 将单个汉字转成拼音** @param hanzi 汉字字符** @return 拼音*/private static String convertSingleHanzi2Pinyin(char hanzi){HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);String[] res;StringBuffer sb=new StringBuffer();try {res = PinyinHelper.toHanyuPinyinStringArray(hanzi,outputFormat);sb.append(res[0]);//对于多音字,只用第一个拼音} catch (Exception e) {e.printStackTrace();return "";}return sb.toString();}/**** 匹配* <P>* 根据字符和正则表达式进行匹配** @param str 源字符串* @param regex 正则表达式** @return true:匹配成功  false:匹配失败*/private static boolean match(String str,String regex){Pattern pattern=Pattern.compile(regex);Matcher matcher=pattern.matcher(str);return matcher.find();}/*** 测试方法*/public static void main(String[] args) {System.out.println(convertHanzi2Pinyin("弗格森的广东省",false).toUpperCase());}
}

java汉字获取首字母相关推荐

  1. java中英文获取首字母之后分组排序

    package com.syz; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import ...

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

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

  3. python 汉字转拼音 获取首字母

    方式一.通过第三方库 import pinyin print(pinyin.get('汉字'))# 获取首字母,可将中文字符串转为中文列表 然后获取每一个汉字的拼音字符串取第一个然后拼接即可print ...

  4. 记录一下:Java 汉字获取拼音或首字母工具类

    记录一下:Java 汉字获取拼音或首字母工具类 Maven依赖配置 Java代码 本文主要记录一下在Java中,如何将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的 ...

  5. Java获取中文汉字拼音首字母方法一(更快速)

    实现效果 文字内容:小苹果 拼音首字母:xpg 工具类 import java.io.UnsupportedEncodingException;/*** @author yang* @version ...

  6. java获取汉字拼音首字母A

    public class GetChinessFirstSpell{ /// <summary> /// 汉字拼音首字母列表 本列表包含了20901个汉字,用于配合 GetChineseS ...

  7. java获取首字母_【Java】获取中文首字母

    获取中文首字母 有时候,比如微信上根据名字拼音首字母排序并检索.那么用Java获取中文首字母是怎么实现的呢? 代码 不多说,直接上代码:(写个工具类) public class FirstCharUt ...

  8. java取字符串首字母_java 获取中文字符的首字母

    原理: GB2312编码中的中文是按照拼音排序的 注意: 一些生僻的字无法获得正确的首字母,原因是这些字都是后加入的. import java.io.UnsupportedEncodingExcept ...

  9. 最强汉字得到首字母拼音java版

    网上有很多汉字得到首字母拼音的代码,基本都出自一种方式,通过对private static final char[] chartable = { '啊', * '芭', '擦', '搭', '蛾', ...

最新文章

  1. Android 自定义View 三板斧之二——组合现有控件
  2. SQLite命令行程序说明
  3. 你的气质里藏着 英文_有小肚腩女人穿衣要讲究,针织套装裙洋气又时髦,穿出优雅气质...
  4. 40 行代码搞定主题词提取
  5. js处理DataSet数据源
  6. 嵌入式系统内存泄漏检测
  7. ffmpeg 将视频转换成图片 截取视频的一段
  8. HTML 教程-菜鸟教程
  9. 星巴克咖啡教室活动体验如何?
  10. 积分上限函数求导总结
  11. .Net Core裁剪图片并存入数据库
  12. 苹果账户登录_iOS 13的通过 Apple 登录第三方应用
  13. 首家共享充电宝倒闭了,王思聪要赌赢了吗?
  14. Vue--创建一个vue项目
  15. 2017百度世界大会 | 爱奇艺创始人CEO龚宇演讲速记
  16. java多线程实现龟兔赛跑
  17. 奇妙的 CSS MASK
  18. WWX的520(结构体排序)
  19. Zemax操作--8(激光扫描系统)
  20. 70道Java开发面试题及答案,linux内核驱动开发视频课程

热门文章

  1. 可满足性问题 SAT、3SAT
  2. 第一批看《复联4》的网友,都在评论区说了什么? |无用但有趣
  3. 基于C99规范,最全C语言预处理知识总结
  4. Wiznote—为知笔记在Ubuntu上的安装
  5. python pcie通信_PCIe总线(协议简述)
  6. 如何基于泄露数据库的查询:脱库数据的整理和查询
  7. 机器学习PR:神经网络系列之概述
  8. 前端性能优化学习 08 资源加载优化
  9. python对字符串按照ascII码顺序排序
  10. CSDN提现规则说明(更新:支持实时提现)