Я делаю эту бесполезную программу, чтобы правильно вернуться к программированию, и я изо всех сил пытаюсь сравнить две строки для точности.Как сравнить две строки для точности
Я в основном есть 2 строки: (пример)
(Константа, им по сравнению с) str1 = "ABCDEFGHIJKL"
(вход) str2 = "abcdefghjkli"
str2 является правильным до (и в том числе) «h». Я хочу знать, что% строки верно.
Это код, который я до сих пор:
Private Function compareString(str1 As String, str2 As String)
'Compares str2 to str1 and returns a % match
Dim strNumber As Integer
Dim percentMatch As Integer
'Dim array1(16), array2(16) As Char
'array1 = str1.ToCharArray
'array2 = str2.ToCharArray
For x = 0 To str1.Length
'If array1(x) = array2(x) Then
If str1(x) = str2(x) Then
strNumber += 1
Else
Exit For
End If
Next
percentMatch = ((strNumber/(str1.Length - 1)) * 100)
percentMatch = CInt(CStr(percentMatch.Substring(0,4)))
Return percentMatch
End Function Два комментировал секции другой подход, который я пытался до приезда сюда. Код должен запустить следующего
CompareString ("ABCDEFGHIJKL", "abcdefghjkli")
strNum получит до 8.
percentMatch = ((8/12) * 100)
* percentMatch = 75
Возвращение 75
Но, его не возвращает это, на линиях
If str1(x) = str2(x) Then
он возвращает ошибку, «Индекс находился вне границ массива.» Я понимаю ошибку, просто не там, где я ошибаюсь.
Если Theres больше информации я могу дать, я сделаю это, как только я вижу уведомление :)
Спасибо заранее,
Rinslep
Вы не можете использовать 'str1 (x) = str2 (x)', если str1 и str2 имеют разную длину. – Jaxedin
Вы также повторяете один индекс за конец 'str1'. Позже вы вызываете 'Substring' значение с плавающей запятой. – pmcoltrane
Он разбивается на первую итерацию, так что даже если бы они были разных длин, наверняка это не имело бы значения? – Rinslep