以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何自动纠正文本错误?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126754)

--  作者:旭日生
--  发布时间:2018/10/28 12:14:00
--  如何自动纠正文本错误?

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


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

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


--  作者:y2287958
--  发布时间:2018/10/28 14:44:00
--  
上个商业版看看
--  作者:旭日生
--  发布时间:2018/10/28 19:54:00
--  
其实,类似WPS或OFFICE的文本自动纠错功能,通过纠错表中的正确文本替换掉原文本中因各种原因(如拼写错误、不规范称呼等)造成的错误文本。如用“江苏省人民政府”替换原文本中的习惯性称呼“江苏省政府”。
--  作者:y2287958
--  发布时间: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

--  作者:旭日生
--  发布时间:2018/10/29 0:34:00
--  
帅哥,在线噢!谢谢y2287958给我全新的思路!
给出的代码似乎能解决问题,但会提示“给定关键字不在字典中”。研究了一下字典功能,但暂时还是没弄明白。

--  作者:旭日生
--  发布时间: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

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


--  作者:旭日生
--  发布时间:2018/10/29 23:58:00
--  
明白了。“文件纠错表”中键值必须是唯一的,否则,就提示上面的错误。