Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

文本框内容比对,并将不同的字符显示在别一个文本框中

风的承诺  发表于:2020-12-24 13:01:13  
复制

有TEXT1,TEXT2,TEXT3三个文本框,点击下载此附件

TEXT1,TEXT2为两个相互比较的文本框,用TEXT2比较TEXT1中的字是否一样!


                  例:TEXT2比较TEXT1中的字符是否一样?不一样的在TEXT3中显示出来

                     例1:TEXT1:123456

                           TEXT2:123554 (其中不用的是5和4,将5和4用/进行分隔显示在TEXT3中)

                           TEXT3:5/4      除相同部份外,不同的部份显示在TEXT3中!


                     例2:TEXT1:123456

                             TEXT2:123456789ABAC (其中不用的是78,如果前缀相同将不相同的后缀全部显示在TEXT3中)

                             TEXT3:789ABAC     除相同部份外,不同的部份显示在TEXT3中!

在百度中遨游了好久,始终没有学到得到相要的结果,唯有在本论坛中请教各位前辈,高手,老师了!

 

Top
vious 发表于:2020-12-24 13:52:04
循环逐位比较就好了呀,一个循环的事

风的承诺 发表于:2020-12-24 16:36:55
麻烦指导,初学ACCESS,

vious 发表于:2020-12-24 17:04:38

思路:1.取得text1和text2中最短的长度数;

2.在长度数内循环mid取字符比较;

3.相同跳过继续循环,不同记录下来并再比较下一个字符,直至相同,加“/”;

4.循环结束,判断记录长度>0,删除最后一个“/”;




风的承诺 发表于:2020-12-24 18:15:27
麻烦写个代码学习学习

vious 发表于:2020-12-25 14:12:37

Public Function different(gs1 As String, gs2 As String) As String
    Dim llong, ldif, i As Integer
    Dim s1, s2 As String
    s = ""
    If Len(gs1) > Len(gs2) Then
        llong = Len(gs2)
        ldif = Len(gs1) - Len(gs2)
    Else
        llong = Len(gs1)
        ldif = Len(gs2) - Len(gs1)
    End If
    For i = 1 To llong
        s1 = Mid(gs1, i, 1)
        s2 = Mid(gs2, i, 1)
        If s1 <> s2 Then
            s = s & s2
            If i <> llong Then If Mid(gs1, i + 1, 1) = Mid(gs2, i + 1, 1) Then s = s & "/"
        End If
    Next

    If Len(s) > 0 Then
        If ldif <> 0 Then s = s & Right(gs2, ldif)
       
    End If
    If Right(s, 1) = "/" Then s = Left(s, Len(s) - 1)
    different = s
End Function

贴不了代码,也传不了附件,就这样吧



vious 发表于:2020-12-25 14:39:17
因为按你的例只考虑了text2的文本比text1长的情况,其它你自己改一下

风的承诺 发表于:2020-12-27 11:33:00


风的承诺 发表于:2020-12-27 11:35:17

有两种情况是对不出:

例1,TEXT1=234

        TEXT2=2345

        TEXT3=应该是5,实际对不出


例1,TEXT1=234

        TEXT2=23

        TEXT3=应该是4,实际对不出

其它测试都OK,麻烦老师再指导




vious 发表于:2020-12-28 08:42:32
Public Function different(gs1 As String, gs2 As String) As String
    Dim llong, ldif, i As Integer
    Dim s, s1, s2 As String
    If Len(gs1) > Len(gs2) Then
        s = gs2
        gs2 = gs1
        gs1 = s
    End If
    s = ""
    llong = Len(gs1)
    ldif = Len(gs2) - Len(gs1)
    For i = 1 To llong
        s1 = Mid(gs1, i, 1)
        s2 = Mid(gs2, i, 1)
        If s1 <> s2 Then
            s = s & s2
            If i <> llong Then If Mid(gs1, i + 1, 1) = Mid(gs2, i + 1, 1) Then s = s & "/"
        End If
    Next
        If ldif > 0 Then s = s & Right(gs2, ldif)
    If Right(s, 1) = "/" Then s = Left(s, Len(s) - 1)
    different = s
End Function



风的承诺 发表于:2020-12-28 10:21:48
感谢老师,非常NICE,完美解决!

总记录:10篇  页次:1/1 9 1 :