gpt4 book ai didi

vba - 逐个字母比较 2 个相似的字符串并突出显示差异

转载 作者:行者123 更新时间:2023-12-03 06:54:52 27 4
gpt4 key购买 nike

我们有 2 个数据库应该有匹配的表。我有一个(生产中)报告,它比较这些字段并以 MS-Access 表单(连续表单样式)将它们显示给用户以进行更正。

这一切都很好,只是很难找到差异。如何设置这些字段的格式以粗体/斜体/着色差异?

"The lazy dog jumped over a brownfox."
"The lazy dog jumped over thebrown fox."

(一旦以某种方式突出显示两个相似的文本字段,就更容易看出它们之间的差异)

"The lazy dog jumped over a brown fox."
"The lazy dog jumped over the brown fox. "

由于我们正在讨论 MS Access 中的表单,因此我不抱太大希望。但我知道我不是第一个遇到这个问题的人。有建议吗?

<小时/>

编辑

我已经采用了 Remou 的解决方案。这不是我理想的解决方案,但它“足够好”,特别是因为我没有任何富文本选项。在构建源表的查询中,我使用 space() 添加尾随空格以使两个字段的长度相等。然后我将此代码添加到两个字段的 Click 事件中(另一个字段的 TextA 和 TextB 颠倒):

    Dim i As Integer
For i = 1 To Len(Me.TextA.Text)
If Right(Left(Me.TextA.Value, i), 1) <> _
Right(Left(Me.TextB.Value, i), 1) Then
Me.TextA.SelStart = i - 1
Me.TextA.SelLength = Len(Me.TextA.Text)
Exit For
End If
Next i

结果是,当您单击每个字段时,会选择字符串末尾的第一个“不同字母”。我能够如此快速地进行实验、编码和发短信,所以我就这么做了。但我迟早会重新审视这个想法,因为这个概念在几个项目中都很有用。

最佳答案

最后两个版本支持富文本并内置于 ms-access 中。因此,您可以构建一个类似以下的屏幕:

alt text

上面的第三列只是绑定(bind)到一个显示两列之间差异的函数。上面是使用以下代码运行第三列/函数的实际屏幕截图。

代码如下:

bolSame = True
i1 = 1: i2 = 1
For i = 1 To Len(c2t)
c1 = Mid(c1t, i1, 1)
c2 = Mid(c2t, i2, 1)
s = c2
If c1 = c2 Then
If bolSame = False Then
bolSame = True
s = "</strong></font>" & s
End If
i1 = i1 + 1: i2 = i2 + 1
Else
If bolSame = True Then
bolSame = False
s = "<font color=red><strong>" & s
End If
i1 = i1 + 1: i2 = i2 + 1
End If
strResult = strResult & s
Next

If bolSame = False Then
strResult = strResult & "</strong></font>"
End If
MyCompare = strResult

我真的不认为这里的问题是生成字符串,真正的难题是当字符串长度不同时。显示两个字符串中的差异远不是一个简单的编码练习。您当然可以从病房中不同的地方进行显示,但突出显示每个差异是一个困难的编码问题。

关于vba - 逐个字母比较 2 个相似的字符串并突出显示差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2858125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com