tangptr@126.com 发表于 2015-12-4 13:10:37

查找字符串重合部分

Public Function SpyFindSubString(ByRef MainString As UNICODE_STRING, ByRef SubString As UNICODE_STRING) As Boolean
Dim Buff1() As Integer
Dim Buff2() As Integer
Dim i As Integer
Dim j As Integer
If MainString.Length < SubString.Length Then SpyFindSubString = False: Exit Function
If MainString.Length = SubString.Length Then
    ReDim Buff1(1 To MainString.Length / 2)
    ReDim Buff2(1 To MainString.Length / 2)
    CopyMemory VarPtr(Buff1(1)), MainString.pBuffer, MainString.Length
    CopyMemory VarPtr(Buff2(1)), SubString.pBuffer, SubString.Length
    For i = 1 To MainString.Length / 2
      If Buff1(i) <> Buff2(i) Then
            SpyFindSubString = False
            Exit Function
      End If
    Next i
    SpyFindSubString = True
Else
    ReDim Buff1(1 To MainString.Length / 2)
    ReDim Buff2(1 To SubString.Length / 2)
    CopyMemory VarPtr(Buff1(1)), MainString.pBuffer, MainString.Length
    For j = 1 To (MainString.MaxLength - SubString.Length) / 2
      CopyMemory VarPtr(Buff2(1)), SubString.pBuffer, SubString.Length
      For i = 1 To SubString.Length / 2
            If Buff1(i + j - 1) <> Buff2(i) Then
                SpyFindSubString = False
                Exit Function
            End If
      Next i
    Next j
    SpyFindSubString = True
End If
这串代码有个问题就是字符串长度不等就会发生逻辑错误。。。

Tesla.Angela 发表于 2016-11-17 21:27:26

那就以短的那个为准,超出的部分去掉。
页: [1]
查看完整版本: 查找字符串重合部分