android通讯录首字母分类,通讯录获取首字母并以首字母归类返回
通讯录获取首字母并以首字母归类返回
效果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通讯录首字母分类,通讯录获取首字母并以首字母归类返回相关推荐
- Laravel 全汉字首字母分类排序
github地址 Laravel 汉语首字母分类排序 实在是没找到汉语首字母分类的好点的办法,自己想点子写了个 效果 $arr =[['name'=>'小龙虾','num'=>44],[' ...
- C#获取字符串的拼音和首字母
C#获取字符串的拼音和首字母 原文:C#获取字符串的拼音和首字母 在C#中我们想要获取字符串的拼音并不是那么困难的,在网上看到很多都是特别笨的方式来实现,其实各有各的好处吧,如果使用了下方法方式,它不 ...
- Android联系人、ListView实现姓名首字母分类和字母定位查找
目 录(本篇字数:2504) 案例 源码下载 思路及实现 一.左侧字母检索器 二.列表显示字母分类 三.列表适配器的逻辑代码 四.汉字转拼音的一个工具类 案例 今天,我们来实现这样的一个小Dem ...
- php实现通讯录按字母分组,通讯录首字母检索功能实现
这次给大家带来通讯录首字母检索功能实现,通讯录首字母检索功能实现的注意事项有哪些,下面就是实战案例,一起来看一下. 主要代码如下: 通讯录首字母检索 通讯录 张三 李四 王五 刘六 马七 黄八 莫九 ...
- Android按照拼音排序获取联系人并根据拼音首字母获取联系人
在写安卓程序的时候,需要获取联系人的信息,需求是根据联系人姓名拼音的首字母查询联系人的信息,也就是说给定一个字母,要查出所有的拼音以该字母开头的联系人.在网上看了好多博客,都建议说使用SORT_KEY ...
- Android 获取一段字符串的首字母的解决方案
最近的项目需要一个功能,将城市名称按首字母查询并加入索引,百度.谷歌了好久,看到的文章解决方案大概相同,就是:通过汉字对应的国际一级汉字区位码进行获取首字母,但是目前一级区位码收录的汉字并不是特别多, ...
- android 联系人 首字母分类 封装(更新)
代码下载地址:https://github.com/Aiushtha/-FancyListIndexer-master 以前写的demo泛型失效而且代码封装不怎么好,重新封装了一下,控件采用Fancy ...
- android 4.4.3上面,联系人的头像默认显示首字母,但是不支持中文字符,修改支持中文
在android 4.4.3上面,联系人的头像默认显示首字母,但是不支持中文字符,如下图: 如果联系人名字的第一位是英文字符(a-z || A-Z),则默认头像将显示该首字母. 如果支持中文时显示第一 ...
- 从gb2py.idx中获取一个汉字的拼音首字母
function GetPinyinFromFile(aHanzi:string):AnsiChar; //从gb2py.idx中获取一个汉字的拼音首字母 var sfile:TMemoryStrea ...
最新文章
- java之Servlet的生命周期
- 正态分布为什么常见?
- EJB 3.x:生命周期和并发模型(第2部分)
- Flutter1.12与原生Android交互(kotlin)
- 1.4_10 有一门不及格的学生
- 小程序入门学习13--云函数与数据库02
- 精简版NovoNotes 3DX for Mac - 顶尖3D音频制作插件
- spring 处理request.getInputStream()输入流只能读取一次问题
- JVM 核心技术 22 讲
- 王源就抽烟致歉 | 大数据分析禁烟对烟草行业的影响有多大
- 英文论文检索数据库以及英文文献下载
- 夜神模拟器如何设置自动代理
- 软件测试mysql数据库相关操作
- 生产力高于一切?我们为什么会对技术上瘾?
- Dell戴尔笔记本电脑G3 3579原装出厂Windows10系统恢复原厂oem系统
- centos7如何安装视频播放器
- 卷积神经网络分类实战
- 你必须要知道的JavaScript数据结构与面试题解答
- [LoadRunner]录制启动时报“The JVM could not be started……”错误解决方案
- MySQL server version for the right syntax to use near ‘SE_SPECIFIC
热门文章
- 分享一个GO语言CMS后台管理系统
- 二维码的生成细节和原理【转】
- linux下播放mp3
- Arduino IDE 控制 RGB_LED 全彩灯(ESP8266示例)
- 解析阿里巴巴为什么选择赴美上市
- linux glibc2.12编译,glibc 2.12 升级 2.14
- latex添加c语言代码,Latex中插入C代码
- 中职计算机课程有趣性,中职院校计算机课程教学探讨.docx
- triz矛盾矩阵_基于TRIZ理论的飞机蜂窝芯零件数控加工固持方法研究
- HDLBits-Modules 题解【Verilog模块例化】(中文翻译+英文原文,可顺带学习英文)