一方面,[2w fr 5k 2j 0w]
不是 VBScript 中的有效数组定义。如果你想用这 5 个字符串元素定义一个数组,你需要这样做:
Array("2w", "fr", "5k", "2j", "0w")
Also, StrComp()
用于将一个字符串与另一个字符串进行比较。它不支持将字符串与数组进行比较。为了将字符串与数组的每个元素进行比较,您需要一个循环。不过,如何构建该循环取决于您想要实现的结果。
查看您的代码,您似乎想在其中找到匹配项2j2H4...
,但不在w2j2H...
,所以简单地使用InStr()
可能不适合你。在这种情况下,您可以使用内部循环进行比较:
ref = Array("2w", "fr", "5k", "2j", "0w")
For i = 1 To Len(strFBString) Step 2
For Each s In ref
If Mid(strFBString, i, 2) = s Then
'...
End If
Next
Next
但正如我已经说过的,细节取决于所需的最终结果。如果你想检查你的输入字符串是否包含any的数组值,你可以这样做:
ref = Array("2w", "fr", "5k", "2j", "0w")
found = False
For i = 1 To Len(strFBString) Step 2
For Each s In ref
If Mid(strFBString, i, 2) = s Then
found = True
Exit For
End If
Next
Next
另一方面,如果您想检查输入字符串是否包含all的参考字符串,你可能会这样做:
ref = Array("2w", "fr", "5k", "2j", "0w")
For Each s In ref
found = False
For i = 1 To Len(strFBString) Step 2
If Mid(strFBString, i, 2) = s Then
found = True
Exit For
End If
Next
If Not found Then Exit For
Next
您还可以使用完全不同的方法,例如将数据放入字典中:
data = CreateObject("Scripting.Dictionary")
For i = 1 To Len(strFBString) Step 2
data(Mid(strFBString, i, 2)) = True
Next
使用这种方法,您可以检查数据是否包含任何参考值,如下所示:
found = False
For s In Array("2w", "fr", "5k", "2j", "0w")
If data.Exists(s) Then
found = True
Exit For
End If
Next
或者检查数据是否包含所有参考值,如下所示:
found = True
For s In Array("2w", "fr", "5k", "2j", "0w")
If Not data.Exists(s) Then
found = False
Exit For
End If
Next