通讯录获取首字母并以首字母归类返回

效果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

// 如果字符是中文,则将中文转为汉语拼音

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;

}

}

依赖

com.belerweb

pinyin4j

2.5.0

标签:String,cl,pinyin,chars,归类,首字母,defaultFormat,通讯录,import

来源: https://blog.csdn.net/sinat_24578249/article/details/116193036

android通讯录首字母分类,通讯录获取首字母并以首字母归类返回相关推荐

  1. Laravel 全汉字首字母分类排序

    github地址 Laravel 汉语首字母分类排序 实在是没找到汉语首字母分类的好点的办法,自己想点子写了个 效果 $arr =[['name'=>'小龙虾','num'=>44],[' ...

  2. C#获取字符串的拼音和首字母

    C#获取字符串的拼音和首字母 原文:C#获取字符串的拼音和首字母 在C#中我们想要获取字符串的拼音并不是那么困难的,在网上看到很多都是特别笨的方式来实现,其实各有各的好处吧,如果使用了下方法方式,它不 ...

  3. Android联系人、ListView实现姓名首字母分类和字母定位查找

    目    录(本篇字数:2504) 案例 源码下载 思路及实现 一.左侧字母检索器 二.列表显示字母分类 三.列表适配器的逻辑代码 四.汉字转拼音的一个工具类 案例 今天,我们来实现这样的一个小Dem ...

  4. php实现通讯录按字母分组,通讯录首字母检索功能实现

    这次给大家带来通讯录首字母检索功能实现,通讯录首字母检索功能实现的注意事项有哪些,下面就是实战案例,一起来看一下. 主要代码如下: 通讯录首字母检索 通讯录 张三 李四 王五 刘六 马七 黄八 莫九 ...

  5. Android按照拼音排序获取联系人并根据拼音首字母获取联系人

    在写安卓程序的时候,需要获取联系人的信息,需求是根据联系人姓名拼音的首字母查询联系人的信息,也就是说给定一个字母,要查出所有的拼音以该字母开头的联系人.在网上看了好多博客,都建议说使用SORT_KEY ...

  6. Android 获取一段字符串的首字母的解决方案

    最近的项目需要一个功能,将城市名称按首字母查询并加入索引,百度.谷歌了好久,看到的文章解决方案大概相同,就是:通过汉字对应的国际一级汉字区位码进行获取首字母,但是目前一级区位码收录的汉字并不是特别多, ...

  7. android 联系人 首字母分类 封装(更新)

    代码下载地址:https://github.com/Aiushtha/-FancyListIndexer-master 以前写的demo泛型失效而且代码封装不怎么好,重新封装了一下,控件采用Fancy ...

  8. android 4.4.3上面,联系人的头像默认显示首字母,但是不支持中文字符,修改支持中文

    在android 4.4.3上面,联系人的头像默认显示首字母,但是不支持中文字符,如下图: 如果联系人名字的第一位是英文字符(a-z || A-Z),则默认头像将显示该首字母. 如果支持中文时显示第一 ...

  9. 从gb2py.idx中获取一个汉字的拼音首字母

    function GetPinyinFromFile(aHanzi:string):AnsiChar; //从gb2py.idx中获取一个汉字的拼音首字母 var sfile:TMemoryStrea ...

最新文章

  1. java之Servlet的生命周期
  2. 正态分布为什么常见?
  3. EJB 3.x:生命周期和并发模型(第2部分)
  4. Flutter1.12与原生Android交互(kotlin)
  5. 1.4_10 有一门不及格的学生
  6. 小程序入门学习13--云函数与数据库02
  7. 精简版NovoNotes 3DX for Mac - 顶尖3D音频制作插件
  8. spring 处理request.getInputStream()输入流只能读取一次问题
  9. JVM 核心技术 22 讲
  10. 王源就抽烟致歉 | 大数据分析禁烟对烟草行业的影响有多大
  11. 英文论文检索数据库以及英文文献下载
  12. 夜神模拟器如何设置自动代理
  13. 软件测试mysql数据库相关操作
  14. 生产力高于一切?我们为什么会对技术上瘾?
  15. Dell戴尔笔记本电脑G3 3579原装出厂Windows10系统恢复原厂oem系统
  16. centos7如何安装视频播放器
  17. 卷积神经网络分类实战
  18. 你必须要知道的JavaScript数据结构与面试题解答
  19. [LoadRunner]录制启动时报“The JVM could not be started……”错误解决方案
  20. MySQL server version for the right syntax to use near ‘SE_SPECIFIC

热门文章

  1. 分享一个GO语言CMS后台管理系统
  2. 二维码的生成细节和原理【转】
  3. linux下播放mp3
  4. Arduino IDE 控制 RGB_LED 全彩灯(ESP8266示例)
  5. 解析阿里巴巴为什么选择赴美上市
  6. linux glibc2.12编译,glibc 2.12 升级 2.14
  7. latex添加c语言代码,Latex中插入C代码
  8. 中职计算机课程有趣性,中职院校计算机课程教学探讨.docx
  9. triz矛盾矩阵_基于TRIZ理论的飞机蜂窝芯零件数控加工固持方法研究
  10. HDLBits-Modules 题解【Verilog模块例化】(中文翻译+英文原文,可顺带学习英文)