联系人姓名的多音字的匹配
来源:互联网 发布:50部网络禁书目录 编辑:程序博客网 时间:2024/04/27 13:17
联系人姓名的多音字的匹配
Eg:百家姓"乐"显示在L分组中,应该是显示在Y分组
详细操作步骤:
1.创建"乐"姓联系人
2.查看联系人列表中该联系人的位置
测试结果:
2.该联系人显示在L分组中
期望结果:
2.百家姓中"乐"字读yue,应该显示在Y分组
包:com.android.providers.contacts中的HanziToPinyin.java做修改
//为联系人名字做多音字匹配
//forsepcialHanzi handle
public static Map<String,Pair<Integer,String>>specialHanziString = new HashMap<String, Pair<Integer,String>>();
static {
specialHanziString.put("银行", newPair<Integer,String>(1,"航"));
specialHanziString.put("院长", newPair<Integer,String>(1,"涨"));
}
在下面的方法中进行汉字转拼音的处理
publicArrayList<Token> get(final String input) //One Hanzi character which haspinyin will be treated as a Token
//for sepcialHanzi handle
int replace_pos = -1;
char replace_char = 0;
for (Map.Entry<String,Pair<Integer,String>> cur
: specialHanziString.entrySet()){
int pos = -1;
pos = input.lastIndexOf(cur.getKey());
if(pos != -1) {
replace_pos = pos +cur.getValue().first;
replace_char =cur.getValue().second.charAt(0);
break;
}
}
该段code是进行名字中有多音字时选择想要的音的处理
在for循环中继续做如下处理
//for sepcialHanzi handle
boolean isSpecial = false;
if(replace_pos != -1 &&replace_pos == i) {
t = getToken(replace_char);
isSpecial = true;
} else {
t = getToken(character);
}
//for sepcialHanzi handle
if(isSpecial) {
t.source =sb.append(character).toString();
}
tokens.add(t);
sb.setLength(0);
//为联系人的姓做多音字匹配
private boolean isFamilyName = false;//加入isFamilyName是因为要做名字的多音字的匹配
public static Map<String, Character> specialHanzi = newHashMap<String, Character>();
static {
specialHanzi.put("8d3e", '\u7532'); // 贾--甲
specialHanzi.put("5355", '\u5584'); // 单--善
specialHanzi.put("6c88", '\u6df1'); // 沈--深
specialHanzi.put("4ec7", '\u6c42'); // 仇--求
specialHanzi.put("89e3", '\u8c22'); // 解--谢
specialHanzi.put("7fdf", '\u5b85'); // 翟--宅
specialHanzi.put("67e5", '\u4e4d'); // 查--乍
specialHanzi.put("66fe", '\u589e'); // 曾--增
specialHanzi.put("665f", '\u6210'); // 晟--成
specialHanzi.put("4e50", '\u6708'); // 乐--月
specialHanzi.put("533a", '\u6b27'); // 区--欧
specialHanzi.put("51af", '\u9022'); // 冯--逢
specialHanzi.put("7e41", '\u5a46'); // 繁--婆
specialHanzi.put("957f", '\u8d26'); // 长--帐
specialHanzi.put("77f3", '\u65f6'); // 石--时
specialHanzi.put("67cf", '\u6446'); // 柏--摆
specialHanzi.put("6734", '\u666e'); // 朴--普
specialHanzi.put("7f2a", '\u79d2'); // 缪--秒
}
//改方法是把汉字字符转化为得到token
privateToken getToken(char character) {
if((specialHanzi.get(Integer.toHexString(character))!=null)&&(isFamilyName== true)){
character = specialHanzi.get(Integer.toHexString(character));
}
在上面的get()方法中可以做判断isFmialyName是不是为true,
if (i == 0) {
isFamilyName = true;
} else {
isFamilyName = false;
}
- 联系人姓名的多音字的匹配
- Android 联系人名字多音字的处理方法
- Android读取联系人的姓名及号码
- 获得联系人姓名、电话号码的方法
- 获取联系人的Id和姓名
- 根据姓名获取联系人的电话号码
- 获取所有联系人的姓名以及号码
- Android读取联系人的姓名及电话号码
- 通过联系人号码获取联系人的姓名(android开发)
- 华为2011年软件岗位校园招聘机试题---联系人姓名在手机上的数字匹配
- android 根据短信地址匹配联系人姓名
- 自动匹配的联系人多选框
- 今天来说说正则匹配姓名的
- android2.2根据电话号码查询联系人姓名的方法
- android2.2根据电话号码查询联系人姓名的方法
- android示例之取得联系人的信息(姓名、电话)
- android 匈牙利语环境下,联系人的姓名顺序颠倒
- 获取联系人的姓名和联系方式,并放到editText中
- C# 服务器接口调试 Log4net【转】
- linux 串口编程
- 将Cocos2d-x游戏打包成Android应用程序
- linux下查阅机器信息
- 【木头Cocos2d-x 031】Lua篇(第06章):Lua调用C++的函数
- 联系人姓名的多音字的匹配
- Eclipse运行大量文件抛出异常java.lang.OutOfMemoryError: GC overhead limit exceeded
- Html.RenderPartial与Html.RenderAction的区别
- 数组排序
- iOS多线程编程:线程同步总结
- 精品运维视频推荐-马哥
- 数据结构重读 – 键树、字典树 中文
- 暑假第二天 7月7日
- 网页 如何适应不同分辨率