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

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

效果1 - 返回首字母

29365de71e56d59f3a2f7728e83de5bc.png

效果2 - 返回拼音

d3d116f696901698952a354b21324b15.png

代码

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值