Ниже приведен фрагмент кода, который вызывает проблемы.Ошибка VB.net с ошибкой сравнения строк
Private Const DOB_VALUE As Integer = 0
Private Const ADDRESS_VALUE As Integer = 1
Private Const NAME_VALUE As Integer = 2
For Each oRecord As KeyValuePair(Of Integer, String) In OriginalFileInfo
For Each nRecord As KeyValuePair(Of Integer, String) In WorkingFileInfo
Dim OriginalComparisonStringSubstrings As String() = oRecord.Value.ToString.ToLower.Split(":")
Dim WorkingComparisonStringSubstrings As String() = nRecord.Value.ToString.ToLower.Split(":")
' Are dates of birth the same?
If OriginalComparisonStringSubstrings(DOB_VALUE) Like WorkingComparisonStringSubstrings(DOB_VALUE) Then
' Are the address the same?
If OriginalComparisonStringSubstrings(ADDRESS_VALUE) Like WorkingComparisonStringSubstrings(ADDRESS_VALUE) Then
' Dob and address are the same, means we have a valid match. Lets check if the names match
If OriginalComparisonStringSubstrings(NAME_VALUE) Like WorkingComparisonStringSubstrings(NAME_VALUE) Then
' dob, address and name matches
Else
' Dob and address matches, name does not
End If
End If
End If
Next
Next
Проблема в том, что когда я получаю сравнение значений адресов, она всегда терпит неудачу. У меня было окно с часами, и значения идентичны, но они не сравниваются. Вы можете увидеть мой выход окна Watch ниже.
- WorkingComparisonStringSubstrings {Length=3} String()
(0) "4323" String
(1) "123 somewhere lane" String
(2) "j ii" String
- OriginalComparisonStringSubstrings {Length=3} String()
(0) "4323" String
(1) "123 somewhere lane" String
(2) "j ii j. .johnson" String
OriginalComparisonStringSubstrings(DOB_VALUE) Like WorkingComparisonStringSubstrings(DOB_VALUE) True Boolean
OriginalComparisonStringSubstrings(ADDRESS_VALUE) Like WorkingComparisonStringSubstrings(ADDRESS_VALUE) False Boolean
OriginalComparisonStringSubstrings(NAME_VALUE) Like WorkingComparisonStringSubstrings(NAME_VALUE) False Boolean
Сравнение по двум адресам, которые были бы («123 где-то полоса» Like «123 где-то переулок») должно быть правдой, но возвращает ложь. Мой вопрос заключается в том, почему эти ценности не сравниваются, если они так кажутся равными? В моем коде я использую сравнения «Как», но я также попробовал String.Compare, StrComp, .Equals, = и все остальные варианты сравнения. Кроме того, значения всегда являются строкой с момента их вставки в переменную FileInfo до момента их разделения и сравнения.
У кого-нибудь есть идея, почему они не сравнится?
Похоже, что NAME_VALUE - это то, что терпит неудачу (на основе вашего выходного сигнала). Здесь '' j ii "' не 'Like' (или равно)' 'j ii j. .johnson''. – crashmstr
Я бы рассмотрел массив символов элемента адреса: 'Dim a = OriginalComparisonStringSubstrings (1) .ToCharArray()'. Они выглядят так, как будто они должны совпадать на основе * того, что вы набрали здесь * (снимок экрана был бы приятным). Результат NAME_VALUE верен, вы можете использовать '.StartsWith()', если это достаточно близкое соответствие. – Plutonix
Кроме того, 'Like' предназначен для сопоставления шаблонов [Like Operator (Visual Basic)] (https://msdn.microsoft.com /en-us/library/swf8kaxw.aspx), чего вы, кажется, не делаете. – crashmstr