微软提供了一个Visual Studio International Pack 组件,可以转换简繁体,或者将汉字转换为拼音以及其他语言的支持。

https://www.microsoft.com/zh-cn/download/details.aspx?id=15251这是下载地址。

下载完成后解压,会得到7个msi安装文件,如果只是进行拼音检索,这里只要使用CHSPinYinConv.msi即可,然后安装记好安装位置,安装完毕后,将安装目录下的dll文件添加的工程中去,即可使用了。下面来看一下官方给出的使用方法:

ChineseCharNew(Char)

ChineseChar类的构造函数。

ChineseCharacter

获取这个汉字字符。

CompareStrokeNumber(Char)

将给出的字符和实例字符的笔画数进行比较。

GetCharCount(Int16)

检索具有指定笔画数的字符个数。

GetChars(String)

获取给定拼音的所有同音字。

GetChars(Int16)

检索具有指定笔画数的所有字符串。

GetHomophoneCount(String)

检索具有指定拼音的字符数。

GetStrokeNumber(Char)

检索指定字符的笔画数。

HasSound(String)

识别字符是否有指定的读音。

IsHomophone(Char)

识别给出的字符是否是实例字符的同音字。

IsHomophone(Char, Char)

识别给出的两个字符是否是同音字。

IsPolyphone

获取这个字符是否是多音字。

IsValidChar(Char)

识别给出的字符串是否是一个有效的汉字字符。

IsValidPinyin(String)

识别给出的拼音是否是一个有效的拼音字符串。

IsValidStrokeNumber(Int16)

识别给出的笔画数是否是一个有效的笔画数。

PinyinCount

获取这个字符的拼音个数。

Pinyins

获取这个字符的拼音。

StrokeNumber

获取这个字符的笔画数。

从上面这个表格中可以看到,构造函数参数一个char类型,因此如果stirng类型则需要循环调用。

我们先来看一个字的情况:

 static void Main(string[] args)
{
char ch = '着';
ChineseChar py = new ChineseChar(ch);
//注意到Pinyins属性是一个集合因此这里我们用foreach
foreach (var item in py.Pinyins)
{
Console.WriteLine(item);
}
Console.ReadLine();
}

运行程序,得到结果:

ZHAO1
ZHAO2
ZHAO5
ZHE5
ZHUO2
ZHUO5

可以看到在所有拼音完成后还有几行空行,并且这个字的所有多音字的拼音全部列举出来,后面的那个数字代表了声调,5是轻声。因此常规情况下我们如果要检索拼音,只需取出集合的第一个字符串,并且把最后的数字去掉即可:

 static void Main(string[] args)
{ string str = "王小会";
StringBuilder pys = new StringBuilder();
foreach (var item in str)
{
ChineseChar py = new ChineseChar(item);
//取出第一个拼音,并且把最后的声调去掉
pys.Append(py.Pinyins[].Remove(py.Pinyins[].Length-));
}
Console.WriteLine(pys.ToString());
Console.ReadLine();
}

运行程序得到结果:

WANGXIAOHUI

这样就完成了拼音检索功能。

.NET 拼音检索的更多相关文章

  1. MD5、拼音检索和邮件发送

    MD5算法 MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错) l  为了防止用户偷懒,算两次MD5值,或者加上一个固定的字符串 MD5算法理论上是不可逆的,因此攻击 ...

  2. easyui combobox 拼音检索快捷选择输入

    easyui combobox 拼音检索快捷选择输入 效果如图   $.ajax({ url: UserActionUrl + '?action=listuserworktype', dataType ...

  3. elasticsearch 拼音检索能力研究

    gitchennan/elasticsearch-analysis-lc-pinyin 配置参数少,功能满足需求. 对应版本 elasticsearch2.3.2 对应 elasticsearch-a ...

  4. 实现首字母或拼音检索-sql语句方式

    create function [dbo].[fn_GetPY](@str nvarchar(max),@type int) returns nvarchar(max) as begin ) begi ...

  5. el-popover 点击input框出现table表,可点击选中,可拼音检索完回车选中

    <template> <card> <el-popover placement="right" width="400" trigg ...

  6. jquery实现仿select列表的即时搜索及拼音搜索

    这里提到select,其实不是select,而是用<li><input>标签去仿造一个select,以实现对已有“option”的快速检索功能. 以<input>标 ...

  7. Solr6.5配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer (二)

    之前在 Solr6.5在Centos6上的安装与配置 (一) 一文中介绍了solr6.5的安装.这篇文章主要介绍创建Solr的Core并配置中文IKAnalyzer分词和拼音检索. 一.创建Core: ...

  8. Simple: 一个支持中文和拼音搜索的 sqlite fts5插件

    之前的工作关系,需要在手机上支持中文和拼音搜索.由于手机上存储数据一般都是用 sqlite,所以是基于 sqlite3 fts5 来实现.这段时间再次入门 c++,所以想用 c++ 实现一下,一来用于 ...

  9. WebGIS中解决使用Lucene进行兴趣点搜索排序的两种思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 目前跟信息采集相关的一个项目提出了这样的一个需求:中国银行等 ...

随机推荐

  1. Ubuntu使用Xming和Putty

    运行个复杂的,比如 gnome-session,这个是 GNOME 的启动命令,如果想打开 KDE 就是 startkde root@carlo-cloud:~# xlogoThe program ' ...

  2. Java初试

    另外在Java语言的代码内部书写文件路径时,需要注意大小写,大小写需要保持一致,路径中的文件夹名称区分大小写.由于’\’是Java语言中的特殊字符,所以在代码内部书写文件路径时,例如代表“c:\tes ...

  3. 解读为什么有符号的char可表示范围是-128~+127

    问:为什么有符号的char可表示范围是-128~+127? 要明白这个问题,首先要明白一下几点: 对于char和int计算机中以补码形式存在. 严格来说计算机就是傻逼,它只知道某个位上是0还是1. 我 ...

  4. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...

  5. 单元测试不是梦,Android+PowerMock系列(1) —— 在Eclipse里搭建测试环境

    单元测试不好搞阿,虽然从TDD角度出发,可测性强的代码很大程度上就代表着好的设计,但是有些情况也是没办法的,比如单例模式,比如Static方法,比如Final类,传统的Mock技术是没办法解决这些问题 ...

  6. jQuery取CSS的HEX(16位)颜色值

    //IE10以上版本.CHROME.FIREFOX中GRB颜色转HEX颜色值 $.fn.getBackgroundColor = function() { var rgb = $(this).css( ...

  7. angular2 学习笔记 (Pipes)

    Pipe 就是 ng1 的 filter <pre>{{ jsonValue | json }}</pre> 用法看这里就很清楚了 : https://angular.cn/d ...

  8. c++实现委托

    #include "stdafx.h" #include <iostream> #include <string> using namespace std; ...

  9. Linux Shell编程(5)——shell特殊字符(下)

    {}代码块[花括号]. 这个结构也是一组命令代码块,事实上,它是匿名的函数.然而与一个函数所不同的,在代码块里的变量仍然能被脚本后面的代码访问. bash$ { local a;      a=123 ...

  10. redis数据过期策略【转】

    key的过期时间通常,Redis key被创建时不会自动关联过期时间,key将长久存在,除非通过DEL等命令显示的删除.EXPIRE命令簇可以为指定的key关联一个过期时间,代价是一点额外的内存开销. ...