С одной стороны, [2w fr 5k 2j 0w]
не является допустимым определением массива в VBScript.Если вы хотите определить массив с этими 5 строковыми элементами, вам нужно сделать это следующим образом:
Array("2w", "fr", "5k", "2j", "0w")
Кроме того, 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
Но, как я уже сказал, детали зависят от желаемого конечного результата.Если вы хотите проверить, содержит ли ваша входная строка любые значений массива, вы можете сделать что-то вроде этого:
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
Если, с другой стороны, вы хотите проверить, является ли ваша входная строкасодержит все справочных строк, которые вы, вероятно, вместо этого сделали бы примерно так:
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