前面写过一篇《Android中文按拼音排序》:http://gqdy365.iteye.com/blog/2002488里面介绍了汉字提取拼音的方法,在此基础上我们实现按汉字首字母搜索的功能,即:输入“bj”得到“北京”;
注意:以下顺序是我的项目实现过程,各位不一定要按这个步骤,活学活用;
一、将汉字集合提取首字母:
1、新建两个集合,
public static List<String> cityNameChar = new ArrayList<String>();//保存中文城市名;
public static List<String> cityNameShort = new ArrayList<String>();//保存拼音首字母;
2、初始化
// 初始化城市字母简称集合
for (int i = 0; i < CityUtil.allCity.length; i++) {
cityNameShort.add(getPingYinShort(CityUtil.allCity[i]));
cityNameChar.add(CityUtil.allCity[i]);
}
用到的方法:
/**
* 将字符串中的中文转化为拼音,并提取首字母
*
* @param inputString
* @return
*/
public static String getPingYinShort(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
char[] input = inputString.trim().toCharArray();// 把字符串转化成字符数组
String shortString = "";
try {
for (int i = 0; i < input.length; i++) {
// \\u4E00是unicode编码,判断是不是中文
if (java.lang.Character.toString(input[i]).matches(
"[\\u4E00-\\u9FA5]+")) {
// 将汉语拼音的全拼存到temp数组
String[] temp = PinyinHelper.toHanyuPinyinStringArray(
input[i], format);
// 取拼音的第一个读音
shortString += temp[0].substring(0, 1);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return shortString;
}
以上三步就完成了首字母集合与中文集合的对应,下面就是查询了:
二、数据查询:
数据查询也很简单,如果用户输入的是中文,就在中文集合中查找,否则在首字母集合中查询并返回对应的中文:
name = name.toLowerCase();
//字母搜索
if (name.matches("[a-zA-Z]+")) {
for (int i = 0; i < CommonUtil.cityNameShort.size(); i++) {
if (CommonUtil.cityNameShort.get(i).indexOf(name) != -1) {
cityData.add(CommonUtil.cityNameChar.get(i));
}
}
return;
}
for (int i = 0; i < CityUtil.allCity.length; i++) {
//这里查询了包含name的字符串,按需要定制;
if (CityUtil.allCity[i].indexOf(name) != -1) {
cityData.add(CityUtil.allCity[i]);
}
}
分享到:
相关推荐
java汉字转拼音,android汉字转拼音,汉字转拼音首字母,汉字转ASCII
delphi 源代码 软件 汉字拼音首字母 将汉字转为拼音首字母,获取取汉字拼音首字母,delphi 源代码 软件 汉字拼音首字母
可以直接调用方法,有需要配合IndexBar-master这个通讯录开源控件使用的可以自己去下载IndexBar这个控件
最近在做一个按拼音首字母排序的ListView需要取汉字拼音首字母,做了如下的方法:
Android汉字转拼音的demo,用的第三方jar包pinyin4j.jar
ListView实现A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,获取通讯录联系人和头像
实现带拼音的排序,就想通讯录里面的效果一样
android 汉字转拼音应用 源代码,没有使用任何第三方jar,本应用可以打包成jar供开发使用。很强大。
匹配中文字符串的拼音首字母或英文字符串的首字母缩写.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android API中的 AutoCompleteTextView组件只能匹配过滤纯英文或者纯汉字的 经过改进后可以输入 汉字拼音匹配汉字 类似于百度搜索 例如输入x 会匹配“迅雷”“迅速” 如果输入s 也可以匹配 “迅速”
使用EditText和ListView实现的可输入筛选的Spinner,输入后触发自动搜索,搜索支持原字符,汉字支持拼音全拼和首字母。代码为demo使用示例,可直接在AndroidStudio中打开使用。
可以参考下面博客:我的Android进阶之旅------>Android之AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字) (博客地址:http://blog.csdn.net/ouyang_peng/article/details/8826806)
中国省市区json文件,包含id,code,全拼音,拼音首字母。(注:因某些名称存在多音字,已经改正过来了)
HanziToPinyin类和Pinyin4J.jar
ccs2Pinyin : 汉字转拼音...getPinyinFirstLetter : 获取第一个汉字首字母 getPinyinFirstLetters: 获取所有汉字的首字母 getSurnamePinyin : 根据名字获取姓氏的拼音 getSurnameFirstLetter: 根据名字获取姓氏的首字母
Android通讯录附搜索及字母索引Demo,基于网友的版本改进,修复搜索异常的bug
一个文字转换拼音的实现方式,AndroidStudio工程,通过开源代码HanziToPinyin.java类实现,网上很通用的一种解决方案,记录一下,可以满足对翻译精度不高的工程要求,可以直接拷贝两个文件到工程中使用。
汉字转拼音很多地方要用到,比如联系人按姓氏首字母排序,拨号盘的模糊匹配,其他检索等都要用到汉字转拼音。 由于汉字在系统中的存储与它对应的拼音没有什么关系,目前汉字转拼音是通过一个汉字和拼音的对照库进行...
Android实现采用汉字拼音首字母对汉字进行搜索,例如待选词有“移动”、“联通”、“开发”、“代码”、“开心”等等,当输入为“K”时筛选出“开发”和“开心”,当输入为“KX”时筛选出“开心”。
仿电话簿按拼音快速索引界面功能,内含汉字转拼音工具 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间删除,谢谢您。]