.NET 拼音检索

微软提供了一个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[0].Remove(py.Pinyins[0].Length-1));
            }
            Console.WriteLine(pys.ToString());
            Console.ReadLine();
        }

运行程序得到结果:

WANGXIAOHUI

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

posted @ 2016-09-21 09:26  啊王会  阅读(1140)  评论(0编辑  收藏  举报