Previous topicNext topic
Help > 开发指南 > 编程基础 > 扩展功能 >
获取汉语拼音
    ///<summary>
    ///汉字转拼音,这是基于微软IFELanguage接口获取拼音的解决方案。
    ///</summary><remarks>
    ///版权声明:本文为CSDN博主「wwh1004」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    ///原文链接:https://blog.csdn.net/wwh1004/article/details/77146186
    ///原作者说明:在写个软件,软件有个功能,需要模糊音匹配字符串,所以网上搜了下获取拼音的方法,很多是用字库的,对多音字识别不好,
    ///后来找到了这个http://club.excelhome.net/thread-229924-1-1.html,但是是vba的,又找到了C#版本,http://blog.sina.com.cn/s/blog_589d32f501000aya.html,
    ///试了下,各种报错,代码也挺乱的,所以打算结合这两个代码,自己写一个,花了1天多,写完了,支持x86/x64,主要是资料太少了
    ///
    ///后记:
    ///我(王健)在「wwh1004」的版本上,又将VBA版本的相关用法集成进来了。
    ///</remarks>
    [Browsable(true)]
    public static class FEPinYin:Object
    {
        ///<summary>
        ///获取拼音
        ///</summary>
        ///<param name="src">要转换拼音的字符串</param>
        ///<param name="Sep">设定拼音间隔字符,默认为空(" ")</param>
        ///<param name="NotationType">设定注音符号如何显示,-1(即TRUE)显示注音,0(即FALSE)隐藏注音,其他数值用数字代替音调(如hàn显示为han4),默认显示注音</param>
        ///<param name="ShowInitialOnly">设定是否仅显示拼音首字,默认显示全部</param>
        ///<param name="ShowOnlyOneChar">设定是否仅显示拼音首字母("zh"显示为"z"),默认显示首字</param><returns></returns>
        public String GetPinYin(String src,String Sep=" ",Int32 NotationType=-1,Boolean ShowInitialOnly=false,Boolean ShowOnlyOneChar=false);
        ///<summary>
        ///判断是否为可被解析字符串
        ///</summary>
        ///<param name="value">字符串</param><returns></returns>
        public Boolean IsValidChineseString(String value);
    }   
    
   
    使用示例如下:
 VB.Net
Proj.MsgDebug.ShowMessage=False
'显示完整的拼音,有比较好的多音字识别能力
Dim strResult As String=FEPinYin.GetPinYin("重庆")
Proj.MsgDebug.Add(strResult)
'用逗号分隔不同的拼音字母
strResult=FEPinYin.GetPinYin("重庆",",")
Proj.MsgDebug.Add(strResult)
'隐藏注音
strResult=FEPinYin.GetPinYin("重庆"," ",0)
Proj.MsgDebug.Add(strResult)
'显示首字母完整,即Ch全部显示
strResult=FEPinYin.GetPinYin("重庆"," ",0,True,False)
Proj.MsgDebug.Add(strResult)
'显示首字母,即Ch只显示c
strResult=FEPinYin.GetPinYin("重庆"," ",0,True,True)
Proj.MsgDebug.Add(strResult)

'执行结果: chóng qìng
'执行结果:,chóng,qìng
'执行结果: chong qing
'执行结果: ch q
'执行结果: c q

 C#
Proj.MsgDebug.ShowMessage = false;
// 显示完整的拼音,有比较好的多音字识别能力
string strResult = FEPinYin.GetPinYin("重庆");
Proj.MsgDebug.Add(strResult);
// 用逗号分隔不同的拼音字母
strResult = FEPinYin.GetPinYin("重庆", ",");
Proj.MsgDebug.Add(strResult);
// 隐藏注音
strResult = FEPinYin.GetPinYin("重庆", " ", 0);
Proj.MsgDebug.Add(strResult);
// 显示首字母完整,即Ch全部显示
strResult = FEPinYin.GetPinYin("重庆", " ", 0, true, false);
Proj.MsgDebug.Add(strResult);
// 显示首字母,即Ch只显示c
strResult = FEPinYin.GetPinYin("重庆", " ", 0, true, true);
Proj.MsgDebug.Add(strResult);
//执行结果: chóng qìng
//执行结果:,chóng,qìng
//执行结果: chong qing
//执行结果: ch q
//执行结果: c q