Foxtable(狐表)用户栏目专家坐堂 → 如何自动纠正文本错误?


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

主题:如何自动纠正文本错误?

帅哥哟,离线,有人找我吗?
旭日生
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:339 积分:3364 威望:0 精华:0 注册:2011/3/22 22:52:00
如何自动纠正文本错误?  发帖心情 Post By:2018/10/28 12:14:00 [只看该作者]

如何根据纠错表自动纠正原文本中的拼写或录入错误呢?找了半天,没看到有人提出和解决这个问题。反复试了半天代码,还是写不对。请版主大神帮忙,看看如何通过窗口纠错按钮实现这个功能?


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test1028.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4724 积分:34374 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2018/10/28 14:44:00 [只看该作者]

上个商业版看看

 回到顶部
帅哥哟,离线,有人找我吗?
旭日生
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:339 积分:3364 威望:0 精华:0 注册:2011/3/22 22:52:00
  发帖心情 Post By:2018/10/28 19:54:00 [只看该作者]

其实,类似WPS或OFFICE的文本自动纠错功能,通过纠错表中的正确文本替换掉原文本中因各种原因(如拼写错误、不规范称呼等)造成的错误文本。如用“江苏省人民政府”替换原文本中的习惯性称呼“江苏省政府”。

 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4724 积分:34374 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2018/10/28 22:00:00 [只看该作者]

Dim dic As New Dictionary(Of String, String)
For Each dr As DataRow In DataTables("文件纠错表").DataRows
    If dr.Isnull("问题文本") = False
        dic.add(dr("问题文本"),dr("纠正文本"))
    End If
Next
For Each dr As DataRow In DataTables("原文本表").DataRows
    If dr.Isnull("原文本") = False
        dr("原文本") = dic(dr("原文本"))
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
旭日生
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:339 积分:3364 威望:0 精华:0 注册:2011/3/22 22:52:00
  发帖心情 Post By:2018/10/29 0:34:00 [只看该作者]

帅哥,在线噢!谢谢y2287958给我全新的思路!
给出的代码似乎能解决问题,但会提示“给定关键字不在字典中”。研究了一下字典功能,但暂时还是没弄明白。

 回到顶部
帅哥哟,离线,有人找我吗?
旭日生
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:339 积分:3364 威望:0 精华:0 注册:2011/3/22 22:52:00
  发帖心情 Post By:2018/10/29 6:51:00 [只看该作者]

又研究了一下,弄明白了。微动了一个地方代码,原来FoxTable的字典功能可以这样用。谢谢y2287958!
Dim dic As New Dictionary(Of String, String)
For Each dr As DataRow In DataTables("文件纠错表").DataRows
    If dr.Isnull("问题文本") = False
        dic.add(dr("问题文本"),dr("纠正文本"))
    End If
Next
For Each dr As DataRow In DataTables("原文本表").DataRows
    If dic.ContainsKey(dr("原文本")) = True Then
        dr("原文本") = dic(dr("原文本"))
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
旭日生
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:339 积分:3364 威望:0 精华:0 注册:2011/3/22 22:52:00
  发帖心情 Post By:2018/10/29 23:40:00 [只看该作者]

奇怪,早晨用的好好的,晚上就提示下列信息,不能用了。请版主帮看一下什么倒霉情况?
.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.10.9.1
错误所在事件:表,原文本表,DataColChanged
详细错误信息:
调用的目标发生了异常。
已添加了具有相同键的项。


 回到顶部
帅哥哟,离线,有人找我吗?
旭日生
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:339 积分:3364 威望:0 精华:0 注册:2011/3/22 22:52:00
  发帖心情 Post By:2018/10/29 23:58:00 [只看该作者]

明白了。“文件纠错表”中键值必须是唯一的,否则,就提示上面的错误。

 回到顶部