找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5225|回复: 1

[求助] 查找字符串重合部分

[复制链接]

78

主题

190

回帖

9

精华

贵宾会员

积分
15605
发表于 2015-12-4 13:10:37 | 显示全部楼层 |阅读模式
  1. Public Function SpyFindSubString(ByRef MainString As UNICODE_STRING, ByRef SubString As UNICODE_STRING) As Boolean
  2. Dim Buff1() As Integer
  3. Dim Buff2() As Integer
  4. Dim i As Integer
  5. Dim j As Integer
  6. If MainString.Length < SubString.Length Then SpyFindSubString = False: Exit Function
  7. If MainString.Length = SubString.Length Then
  8.     ReDim Buff1(1 To MainString.Length / 2)
  9.     ReDim Buff2(1 To MainString.Length / 2)
  10.     CopyMemory VarPtr(Buff1(1)), MainString.pBuffer, MainString.Length
  11.     CopyMemory VarPtr(Buff2(1)), SubString.pBuffer, SubString.Length
  12.     For i = 1 To MainString.Length / 2
  13.         If Buff1(i) <> Buff2(i) Then
  14.             SpyFindSubString = False
  15.             Exit Function
  16.         End If
  17.     Next i
  18.     SpyFindSubString = True
  19. Else
  20.     ReDim Buff1(1 To MainString.Length / 2)
  21.     ReDim Buff2(1 To SubString.Length / 2)
  22.     CopyMemory VarPtr(Buff1(1)), MainString.pBuffer, MainString.Length
  23.     For j = 1 To (MainString.MaxLength - SubString.Length) / 2
  24.         CopyMemory VarPtr(Buff2(1)), SubString.pBuffer, SubString.Length
  25.         For i = 1 To SubString.Length / 2
  26.             If Buff1(i + j - 1) <> Buff2(i) Then
  27.                 SpyFindSubString = False
  28.                 Exit Function
  29.             End If
  30.         Next i
  31.     Next j
  32.     SpyFindSubString = True
  33. End If
复制代码

这串代码有个问题就是字符串长度不等就会发生逻辑错误。。。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2016-11-17 21:27:26 | 显示全部楼层
那就以短的那个为准,超出的部分去掉。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表