java 按拼音模糊搜索汉字_C#中拼音模糊匹配汉字智能搜索

本文介绍了如何使用Microsoft Visual Studio International Pack进行汉字转拼音,实现Java和C#中按拼音进行模糊搜索汉字的功能。首先需要安装并引用相关DLL,然后通过代码示例展示了字母和汉字的模糊搜索方法,利用拼音转换进行模糊匹配。
摘要由CSDN通过智能技术生成

准备:

微软官方出了一个专用的汉字转拼音包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 list = null;

List categorylist = new List();

//字母模糊搜索

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 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值