Java - 获取汉字大写首字母输出

news/2025/2/12 23:22:30/

背景

有个项目需要将一批字符串的拼音首字母输出并大写,写了个工具类。

实现

需要引入外部jar。

<dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version>
</dependency>
public static void main(String[] args) {List<String> list = Arrays.asList("中国", "北京");System.out.println(getBelongLetterMap(list));
}/*** 根据入参的list返回分组map*/
public static Map<String, String> getBelongLetterMap(List<String> list) {if (CollectionUtils.isEmpty(list)) {return Maps.newHashMap();}Comparator com = Collator.getInstance(Locale.CHINA);Collections.sort(list, com);Map<String, String> map = new TreeMap<String, String>();for (int i = 1; i <= 26; i++) {String word = String.valueOf((char) (96 + i)).toUpperCase();for (String str : list) {String fullSpell = getFullSpell(str);if (StringUtils.isEmpty(fullSpell)) {continue;}String zm = fullSpell.substring(0, 1);if (word.equalsIgnoreCase(zm)) {map.put(str, word);}}}return map;
}/*** 获取汉字串拼音,英文字符不变*/
public static String getFullSpell(String chinese) {if (StringUtils.isEmpty(chinese)) {return null;}StringBuilder pybf = new StringBuilder();char[] arr = chinese.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < arr.length; i++) {if (arr[i] > 128) {try {pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);} catch (Exception e) {if (i == 0) {//第一个字符就异常  那必定是特殊字符 直接返回nullreturn null;}}} else {pybf.append(arr[i]);}}return pybf.toString();
}

输出:
在这里插入图片描述


http://www.ppmy.cn/news/1368978.html

相关文章

MyBatis 学习(六)之动态 SQL

目录 1 动态 SQL 介绍 2 if 标签 3 where 标签 4 set 标签 5 trim 标签 6 choose、when、otherwise 标签 7 foreach 标签 8 bind 标签 1 动态 SQL 介绍 动态 SQL 是 MyBatis 强大特性之一&#xff0c;极大的简化我们拼装 SQL 的操作。MyBatis 的动态 SQL 是基于 OGNL 的…

利用FFMPEG 将RTSP流的音频G711 转码为AAC 并 推流到RTMP

之前我们的视频转码项目中 是没有加入音频的 现在 需要加入音频 &#xff0c;由于RTMP只支持AAC的 音频流 而有的RTSP流的音频编码并不是AAC 大多数都是G711编码 还分为G711A 和G711U 之前用ffmpeg命令行可以直接 完成转码 并推送到RTMP 但是考虑到无法获取更详细的状…

2314576

☞ 通用计算机启动过程 1️⃣一个基础固件&#xff1a;BIOS 一个基础固件&#xff1a;BIOS→基本IO系统&#xff0c;它提供以下功能&#xff1a; 上电后自检功能 Power-On Self-Test&#xff0c;即POST&#xff1a;上电后&#xff0c;识别硬件配置并对其进行自检&#xff0c…

APS面试审核准备的常规问题

之前根据其他人的经验贴&#xff0c;准备了一些可能APS 面试审核可能会遇到的常规问题&#xff0c;现在简单分享一下。 一般会考虑到留学资金来源&#xff0c;在德国能不能顺利毕业&#xff1b;学的是什么专业内容之类的&#xff0c;判断去德国会不会好好学习&#xff1b;对德国…

Vue开发实例(七)Axios的安装与使用

说明&#xff1a; 如果只是在前端&#xff0c;axios常常需要结合mockjs使用&#xff0c;如果是前后端分离&#xff0c;就需要调用对应的接口&#xff0c;获取参数&#xff0c;传递参数&#xff1b;由于此文章只涉及前端&#xff0c;所以我们需要结合mockjs使用&#xff1b;由于…

repo介绍和安装

介绍 https://blog.devwiki.net/2023/11/27/Windows-repo.html 安装&#xff1a; https://blog.csdn.net/ysy950803/article/details/104188793

kafka文件存储机制和消费者

1.broker文件存储机制 去查看真正的存储文件&#xff1a; 在/opt/module/kafka/datas/ 路径下 kafka-run-class.sh kafka.tools.DumpLogSegments --files ./00000000000000000000.index 如果是6415那么这个会存储在563的log文件之中&#xff0c;因为介于6410和10090之间。 2.…