通讯录获取首字母并以首字母归类返回
2021/5/6 18:25:44
本文主要是介绍通讯录获取首字母并以首字母归类返回,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
通讯录获取首字母并以首字母归类返回
效果1 - 返回首字母
效果2 - 返回拼音
代码
package com.dt.wx.miniprogram.app.util; import lombok.extern.slf4j.Slf4j; 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; /** * @Description: 汉字 * @author: qu * @Date: 2021/4/27 9:53 * @Copyright: * @Version 1.0 */ @Slf4j public class PinyinUtil { public String convertToPinyin(String chineseLanguage){ char[] cl_chars = chineseLanguage.trim().toCharArray(); String pinyin = ""; HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // 输出拼音全部小写 defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 不带声调 defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ; try { for (int i=0; i<cl_chars.length; i++){ // 如果字符是中文,则将中文转为汉语拼音 if (String.valueOf(cl_chars[i]).matches("[\u4e00-\u9fa5]+")){ pinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0]; } else { // 如果字符不是中文,则不转换 pinyin += cl_chars[i]; } } } catch (BadHanyuPinyinOutputFormatCombination e) { log.info("字符: {}, 转拼音异常,原因为 {}", chineseLanguage, e); } return pinyin; } /** * 取第一个汉字的第一个字符 * @Title: getFirstLetter * @Description: TODO * @return String * @throws */ public static String getFirstLetter(String chineseLanguage){ char[] cl_chars = chineseLanguage.trim().toCharArray(); String pinyin = ""; HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // 输出拼音全部大写 defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); // 不带声调 defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); try { String str = String.valueOf(cl_chars[0]); // 如果字符是中文,则将中文转为汉语拼音,并取第一个字母 if (str.matches("[\u4e00-\u9fa5]+")) { pinyin = PinyinHelper.toHanyuPinyinStringArray(cl_chars[0], defaultFormat)[0].substring(0, 1); } else if (str.matches("[0-9]+")) { // 如果字符是数字,取数字 //pinyin += cl_chars[0]; //本次需求数字变成# return "#"; } else if (str.matches("[a-zA-Z]+")) { // 如果字符是字母,取字母 pinyin += cl_chars[0]; } else { // 否则返回'#' return "#"; } } catch (BadHanyuPinyinOutputFormatCombination e) { log.info("字符:{},转拼音异常,原因为{}",chineseLanguage,e); } return pinyin; } }
依赖
<!-- 汉语拼音 --> <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.0</version> </dependency>
这篇关于通讯录获取首字母并以首字母归类返回的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南