Foxtable(狐表)用户栏目专家坐堂 → 这个getpy的结果有点意外


  共有3411人关注过本帖树形打印复制链接

主题:这个getpy的结果有点意外

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110818 积分:564034 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/27 11:51:00 [显示全部帖子]

多音字的原因,这个没有办法解决,可能.net4.0的算法不一样了,试试另外一个:http://www.foxtable.com/webhelp/topics/1270.htm

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110818 积分:564034 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/27 16:12:00 [显示全部帖子]

内置拼音用法有问题,多音字默认是按照拼音排序取值,不是按照常用字频率取值的。临时解决,下载dll放到Foxtable按照目录,然后添加引用,全局代码:

Public Function GetPinYin2(text As String, mode As Short) As String
Dim fnt As New Pinyin4net.Format.HanyuPinyinOutputFormat
fnt.ToneType = Pinyin4net.Format.HanyuPinyinToneType.WITHOUT_TONE
fnt.VCharType = Pinyin4net.Format.HanyuPinyinVCharType.WITH_U_UNICODE
Dim sb As New StringBuilder
For Each c As Char In text
    If mode = 0 Then
        sb.Append(" " & Pinyin4net.PinyinHelper.ToHanyuPinyinStringArray(c, fnt)(0))
    Else
        sb.Append(Pinyin4net.PinyinHelper.ToHanyuPinyinStringArray(c, fnt)(0)(0))
    End If
Next
Return sb.ToString().Trim
End Function

调用

Dim str As String = "采购入库单"

MsgBox(GetPinYin2(str, 0))

MsgBox(GetPinYin2(str, 1))
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:pinyin4net.zip


[此贴子已经被作者于2019/7/27 16:12:36编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110818 积分:564034 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/28 22:20:00 [显示全部帖子]

Foxtable安装目录里有一个ChnCharInfo.dll,引用一下,然后代码改改

    Public Function GetPinYin2(text As String, mode As Short) As String
        Dim fnt As New Pinyin4net.Format.HanyuPinyinOutputFormat
        fnt.ToneType = Pinyin4net.Format.HanyuPinyinToneType.WITHOUT_TONE
        fnt.VCharType = Pinyin4net.Format.HanyuPinyinVCharType.WITH_U_UNICODE
        Dim sb As New StringBuilder
        For Each c As Char In text
            If Microsoft.International.Converters.PinYinConverter.ChineseChar.IsValidChar(c) Then
                If mode = 0 Then
                    sb.Append(" " & Pinyin4net.PinyinHelper.ToHanyuPinyinStringArray(c, fnt)(0))
                Else
                    sb.Append(Pinyin4net.PinyinHelper.ToHanyuPinyinStringArray(c, fnt)(0)(0))
                End If
            Else
                sb.Append(c)
            End If
        Next
        Return sb.ToString().Trim
    End Function

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110818 积分:564034 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/29 9:03:00 [显示全部帖子]

一样。这种问题试试不就知道了

 回到顶部