C#中拼音模糊匹配汉字智能搜索
准备:
微软官方出了一个专用的汉字转拼音包Microsoft Visual Studio International Pack 1.0 SR1
首先到官网http://www.microsoft.com/zh-cn/download/details.aspx?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文件夹下(我的是Reference),接下来添加引用
Code:
using Microsoft.International.Converters.PinYinConverter;
#region==模糊搜索==
private void MistinessSel()
{
string selwords = GetFormString("words");
if (selwords != "")
{
//判断是汉字还是字母
string pattern = @"^[A-Za-z]+$";
Regex regex = new Regex(pattern);
List<Model.t_category> list = null;
List<Model.t_category> categorylist = new List<Model.t_category>();
//字母模糊搜索
if (regex.IsMatch(selwords))
{
selwords = selwords.ToLower();
list = new BLL.t_category().GetModelList(" ParentID!=0 ");
//拼音模糊查询法
for (int i = 0; i < list.Count; i++)
{
//StringBuilder str = new StringBuilder();//定义一个可变长度的字符串
//char[] chs; //定义一个字符数组来接收每个汉字的拼音
string spells = "";
//遍历F_ConnName字段中所有汉字
foreach (char c in list[i].Name.ToCharArray())
{
//验证该汉字是否合法
if (ChineseChar.IsValidChar(c))
{
ChineseChar CC = new ChineseChar(c);
//将该汉字转化为拼音集合
ReadOnlyCollection<string> roc = CC.Pinyins;
//获取集合中第一个数据即为该汉字的拼音
spells += roc[0].ToLower();
}
}
if (spells.Contains(selwords))
{
categorylist.Add(list[i]);
}
}
}
else
{
categorylist = new BLL.t_category().GetModelList(" ParentID!=0 and Name LIKE '%" + selwords + "%'"); ;
}
ResponseText(Newtonsoft.Json.JsonConvert.SerializeObject(new { res = 1, list = categorylist }));
}
else {
ResponseText(Newtonsoft.Json.JsonConvert.SerializeObject(new { res = 0 }));
}
}
#endregion
C#中拼音模糊匹配汉字智能搜索的更多相关文章
- dev 中 字符串转中文拼音缩写,对grid列表进行模糊匹配,grid获取焦点行,gridlookupedit控件用拼音模糊匹配下拉选项
番外篇:. //该方法是将字符串转化为中文拼音的首写字母大写, public static string RemoveSpecialCharacters(string str){try{if (str ...
- JDBC 操作预编译语句中LIKE模糊匹配怎么用
问题描述 在使用JDBC 预编译执行语句时,遇到一个问题,那就是在含有LIKE的查询语句时,我到底怎么使用匹配符%._呢. 如: SELECT * FROM "+LQ_USERS+" ...
- pandas 中的模糊匹配
- Oracle和Mysql中mybatis模糊匹配查询区别
1.Oracle AND NAME LIKE '%'||#{name}||'%' 2.Mysql AND NAME LIKE "%"#{name}"%"
- orm中 如何模糊匹配某一年的用户和某一事时间段的用户
导入Q查询
- Android自定义模糊匹配搜索控件(二)
在项目中遇到一个需要通过某个字的值筛选匹配带出其他信息的需求,在这里将实现思路整理出来. 源码地址:https://github.com/whieenz/SearchSelect 先看效果图 上图中的 ...
- FuzzyAutocomplete代码模糊匹配智能提示
下载地址:https://github.com/FuzzyAutocomplete/FuzzyAutocompletePlugin Xcode 7.3.1 中已经对代码模糊匹配智能提示优化,已经不需要 ...
- 【搜索引擎】 PostgreSQL 10 实时全文检索和分词、相似搜索、模糊匹配实现类似Google搜索自动提示
需求分析 要通过PostgreSQL实现类似Google搜索自动提示的功能,例如要实现一个查询海量数据中的商品名字,每次输入就提示用户各种相关搜索选项,例如淘宝.京东等电商查询 思路 这个功能可以用 ...
- EasyUI combobox下拉列表实现搜索过滤(模糊匹配)
项目中的某个下拉列表长达200多个项,这么巨大的数量一个一个找眼镜都得看花,于是就得整了个搜索功能.看网上别人帖子有只能前缀匹配的方案,但只能前缀匹配的话用起来也不是很方便.于是就记录一下模糊匹配的方 ...
随机推荐
- Linux 开机自动启动脚本
1)编写要执行脚本的sh文件mysetup.sh #!/bin/sh ### BEGIN INIT INFO # Provides: land.sh # Required-start: $local_ ...
- 实现自己的BeanFactory、AOP以及声明式事务
实现自己的BeanFactory 在使用spring时,我们很少用& ...
- 1134. Vertex Cover (25)
A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at le ...
- GUI学习之十五——QAbstractSpinBox学习总结
QAbstractSpinBox是一个抽象类,是将所有步长调节器的通用的功能抽象出了一个父类.虽然QAbstractSpinBox是一个抽象类,但是可以直接实例化使用.QAbstractSpinBox ...
- git概述(二)
分支管理 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部写完再一次 ...
- LOJ6358 前夕
上来4的倍数又要交集恰好 单位根反演+二项式反演定了( 具体推柿子放下面了qwq $g(n) = \sum_{i=n}^N f(i) \binom{i}{n} \\g(n) = \binom{N}{n ...
- js学习之BOM和DOM
1. 浏览器的原理 1.1 浏览器的多线程 (1) 解析js引擎线程 (2) UI渲染线程 (3) 事件发起线程 (4) 发起请求的线程 (5) 定时器的线程 1.2 同步异步 (1) 前 ...
- 利用BeautifulSoup爬去我爱我家的租房数据
因为之前对BeautifulSoup一直不是很熟悉,刚好身边的朋友同事在找房子,就想着能不能自己写个爬虫爬一下数据,因此就写了这个爬虫.基本都是边看书边写的,不过也没什么好讲的.直接粘代码了. # c ...
- Win10 设置系统时间
- js+css--单选按钮,自定义选中的颜色???(性别按钮,男女)
效果图: html: <div class="item"><div class="rad"></div><span c ...