C#中如何用拼音模糊匹配汉字的首字母
展开全部
最近在做一个模拟手机通讯录的管理器时,要用到拼音来查找联系人信息。id=15251下载安装包,下载完后解压vsintlpack1,里面有7个安装包,只需安装CHSPinYinConv(跟拼音相关)和CHTCHSConv(简体和繁体间的转换)这两个包就可以了,安装完毕后,需要在VS里添加引用,分别引用:C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library下和C:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool下的dll即可使用(这两个路径是你安装时文件存放的位置,通过项目中的引用→浏览 转到安装文件的路径即可找到dll)。��四芴岣卟檠�俣龋�貌檠�氖�菰次�鸭釉厥�莸膁atagrid) using Microsoft.International.Converters.PinYinConverter; using System.Collections.ObjectModel; //为了方便,这里只引用关键命名空间///<summary>/// 模糊查询 ///</summary>///<param name="sender"></param>///<param name="e"></param>privatevoid txtName_TextChanged(object sender, TextChangedEventArgs e) { List<T_PhoneContact> check = new List<T_PhoneContact>(); List<T_PhoneContact> list = new List<T_PhoneContact>(); list = (List<T_PhoneContact>)datagrid.Items.SourceCollection; if (string.IsNullOrEmpty(txtPin.Text)) //如果输入框为空时,加载全部数据 { BindDGD(); //重新绑定数据源 } elseif (txtPin.Text.Length>0) { //拼音模糊查询法for (int i = 0; i < list.Count; i++) { StringBuilder str=new StringBuilder();//定义一个可变长度的字符串char[] chs; //定义一个字符数组来接收每个汉字的拼音 //遍历F_ConnName字段中所有汉字foreach (char c in list[i].F_ConnName.ToCharArray()) { //验证该汉字是否合法if (ChineseChar.IsValidChar(c)) { ChineseChar CC = new ChineseChar(c); //将该汉字转化为拼音集合 ReadOnlyCollection<string> roc = CC.Pinyins; //获取集合中第一个数据即为该汉字的拼音 chs=roc[0].ToLower().ToCharArray(); //将该汉字的拼音首字母追加到可变字符串中 str.Append(chs[0]); } } //判断该字符中是否包含输入的拼音if (str.ToString().Contains(txtPin.Text)) { check.Add(list[i]);//将查到的数据加到list中 } } datagrid.ItemsSource = check;//重新绑定数据 } } //绑定privatevoid BindDGD() { datagrid.ItemsSource = new T_PhoneContactBLL().ListAll(); }如果哪位有更好的方法,可给我留言,谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询