缓冲区中是:ABaB ,对应 查找 aBaB
ByteFind=aBaB ByteFind2=AbAb,我第一次查找时,只传了第一个字节进去,
bfw1 = InStrB(Start2, bStrand, ByteFind(0)) 这里查找 a
bfw2 = InStrB(Start2, bStrand, ByteFind2(0)) 这里查找 A
然后在循环中,再依次比较后续的字符。每次都是与二种字符相比较,所以不会漏
For i = 1 To UBound(ByteFind)
If bStrand(bfw1 + i) = ByteFind(i) Or bStrand(bfw1 + i) = ByteFind2(i) Then '如果等于其中一个 这里使用循环比较 B\b、a\A、B\b 三种情况,所以就不会漏
第一次是 bfw2 找到,然后bfw1为0或为更大值,经判断后,使用 bfw2
然后循环中
B=ByteFind(1)
a=ByteFind(2)
B=ByteFind(3)
都命中这个判断的 bStrand(bfw1 + i) = ByteFind(i) Or bStrand(bfw1 + i) = ByteFind2(i) 前半部分,因为这个判断是 or ,所以整个表达式都是真,循环继续。
如果命中后半部分,也会得到真的结果。而后半部分对应的是 查找字符串的 大小写情况。
所以,我的代码不会漏掉这种情况。
-------------------
今天是在另一个电脑上,没有测试环境,所以自己没法测试。
ByteFind=aBaB ByteFind2=AbAb,我第一次查找时,只传了第一个字节进去,
bfw1 = InStrB(Start2, bStrand, ByteFind(0)) 这里查找 a
bfw2 = InStrB(Start2, bStrand, ByteFind2(0)) 这里查找 A
然后在循环中,再依次比较后续的字符。每次都是与二种字符相比较,所以不会漏
For i = 1 To UBound(ByteFind)
If bStrand(bfw1 + i) = ByteFind(i) Or bStrand(bfw1 + i) = ByteFind2(i) Then '如果等于其中一个 这里使用循环比较 B\b、a\A、B\b 三种情况,所以就不会漏
第一次是 bfw2 找到,然后bfw1为0或为更大值,经判断后,使用 bfw2
然后循环中
B=ByteFind(1)
a=ByteFind(2)
B=ByteFind(3)
都命中这个判断的 bStrand(bfw1 + i) = ByteFind(i) Or bStrand(bfw1 + i) = ByteFind2(i) 前半部分,因为这个判断是 or ,所以整个表达式都是真,循环继续。
如果命中后半部分,也会得到真的结果。而后半部分对应的是 查找字符串的 大小写情况。
所以,我的代码不会漏掉这种情况。
-------------------
今天是在另一个电脑上,没有测试环境,所以自己没法测试。
授人于鱼,不如授人于渔
早已停用QQ了