android 拼音过滤、匹配首字母
第一步:添加
implementation 'com.github.open-android:pinyin4j:2.5.0'
第二步:拼音工具类
public class Pinyin4jUtil {public static StringBuilder sb=new StringBuilder();/*** 获取汉字字符串的各个字首字母* 中国:zg* @param chines* @return*/public static String getPinYinHeadChar(String chines){sb.setLength(0);char[] chars=chines.toCharArray();HanyuPinyinOutputFormat defaultFormat=new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i=0;i<chars.length;i++){if(chars[i]>128){try{sb.append(PinyinHelper.toHanyuPinyinStringArray(chars[i],defaultFormat)[0].charAt(0));}catch (Exception e){e.printStackTrace();}}else{sb.append(chars[i]);}}return sb.toString();}/*** 获取汉字字符串的首字母* 中国:Z* @param string* @return*/public static String getPinYinFirstLetter(String string){sb.setLength(0);char c=string.charAt(0);String[] pinyinArray=PinyinHelper.toHanyuPinyinStringArray(c);if (pinyinArray!=null){sb.append(pinyinArray[0].charAt(0));}else{sb.append(c);}return sb.toString().toUpperCase();}/*** 获取汉字字符串的汉语拼音* 中国:zhongguo* @param chines* @return*/public static String getPinYin(String chines) {sb.setLength(0);char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < nameChar.length; i++) {if (nameChar[i] > 128) {try {sb.append(PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0]);} catch (Exception e) {e.printStackTrace();}} else {sb.append(nameChar[i]);}}return sb.toString();}}
第三步:在添加数据源里面使用(也就是你输入拼音首字母要匹配的名字)
String pinyin = Pinyin4jUtil.getPinYin(bean.getName()); bean.setPinyin(pinyin);
第四步:在adapter里面继承 implements Filterable 过滤(不管是listview还是recycleview都可以实现)
第五步:自定义适配
// 定义过滤的适配 private class PersonFilter extends Filter {private List<Bean> bean;public PersonFilter(List<Bean> list) {this.bean= list;}@Overrideprotected FilterResults performFiltering(CharSequence constraint) {FilterResults results = new FilterResults();if (constraint == null || constraint.length() == 0) {results.values = bean;results.count = bean.size();} else {List<Bean> mList = new ArrayList<Bean>();for (Bean p: bean) {if (p.getName().toUpperCase().startsWith(constraint.toString().toUpperCase())|| p.getPinyin().toUpperCase().startsWith(constraint.toString().toUpperCase())) {mList.add(p);}}results.values = mList;results.count = mList.size();}return results;}@Overrideprotected void publishResults(CharSequence constraint, FilterResults results) {displayList = (List<Bean>)results.values;notifyDataSetChanged();}}
第六步:实现调用过滤
@Override public Filter getFilter() {if (filter == null) {filter = new PersonFilter(realList);}return filter; }
android 拼音过滤、匹配首字母相关推荐
- android 仿微信联系人 首字母分组快速索引
总结是一种习惯,不能停,一停人就懒了,都快一个月没有写了!该提提神了! 进入正题:android 仿微信联系人 首字母快速索引,先用下美团的索引效果图: 1.自定义View字母索引栏(右边那一列): ...
- C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual S ...
- 中英文混合拼音排序(从首字母开始,相同则往下比较)
中英文混合拼音排序(从首字母开始,相同则往下比较) 中文/英文混合数据 进行转拼音(中文),按照26个字母顺序排序,从首字母开始比较,相同则比较第二个字母,如此类推,直到结束排序为止. pom.xml ...
- Java获取中文拼音、中文首字母缩写和中文首字母
我们有时候会遇到这样的情况,需要获取某些中文的拼音.中文首字母缩写和中文首字母,下面我将为大家介绍一下如何获取中文拼音的缩写. 1.项目建立和配置 首先,我们建立一个java项目,新建libs文件夹并 ...
- Excel汉字转拼音并提取首字母
Excel汉字转拼音并提取首字母步奏 1.打开VB窗口alt+f11可以快捷打开 2.如下图新建模块 3.模块建好后插入代码 Function getpychar(char)tmp = 65536 + ...
- Excel中文转拼音(中文首字母)
Excel中文转拼音(中文首字母) 1.打开Excel->Alt+F11->Viaual Basic编辑器 2.在弹出来的窗口中点击插入->模块->ctrl+s 保存 Func ...
- 正则匹配-首字母是$ _ 英文 ,内容包括英文 数字 $ _
网上找了一圈也没找到匹配首字母$,就和小伙伴试了出来 首字母是$ _ 英文 ,内容包括英文 数字 $ _: 正则:new RegExp('^(\\$|[a-zA-Z_])[a-zA-Z0-9_\\$] ...
- js实现汉字转拼音(解决首字母排序问题)
实现思路 汉字有21个声母:b, p, m, f, d, t, n, l, g, k, h, j, q, x, zh, ch, sh, r, z, c, s 有韵母24个,其中单韵母有6个:a, o, ...
- Java-汉字字符串转拼音,包括首字母和全拼
本方法通过pinyin4j这个工具包来实现. 主要流程为先将字符串转换为char[]数组,再循环判断字符是否是汉字,这一步主要使用汉字Unicode编码进行匹配,是汉字则调用pinyin4j中的汉字转 ...
- 小程序楼层索引,将汉字转换为拼音并以首字母排序
1.根据正则码校验汉字对应的拼音: export default {pinyin: {"a": "\u554a\u963f\u9515","ai&qu ...
最新文章
- C语言不要重复包含.h头文件和.c文件
- wp博客写文章500错误_500多个博客文章教我如何撰写出色的文章
- 程序员加班很严重吗?看看国外程序员怎么怼老板!
- SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!
- 《王者荣耀》回应故障:3个工作日内补发排位赛星积分丢失
- [C# 基础知识梳理系列]专题四:事件揭秘
- 登录tomcat服务器首页直接跳转到项目
- 3.指定IP地址抓包
- 基于stm32智能风扇_意法半导体和Fieldscale为基于STM32的智能设备带来简单直观的触控体验...
- 作业帮冯雪胡不归问题_作业帮学习平台微信服务号关注
- 适合初学者使用的Mac绘图软件推荐
- 重庆地区外卖店铺分析系统的设计与实现
- 知乎|10个程序员必备免费电子书下载网站
- 网站建设中百度快照劫持是什么?劫持百度快照是怎么回事?
- vscode替换全局搜索快捷键
- h5支付——前端需要处理什么?
- 如何用Procmon.exe来监视SQLSERVER的logwrite大小
- Flutter开发:给image设置圆角的方法
- 人脸姿态估计(计算欧拉角)
- 北航研究生计算机网络实验报告,实验7_北航研究生计算机网络实验