VB.net 字符串比较失败的问题

VB.net Issue with a string comparison failing

下面是有问题的代码片段。

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

问题是,当我进行地址值比较时,它总是失败。我的手表 window 处于活动状态,值相同但无法比较。您可以在下面看到我的 Watch window 输出。

-       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 something lane” Like “123 something lane”)应该为真但返回假。我的问题是,当这些值看起来如此相等时,为什么它们在比较中会失败?在我的代码中,我使用了 "Like" 比较,但我也尝试了 String.Compare、StrComp、.Equals、= 和所有其他比较变体。此外,从插入 FileInfo 变量到拆分和比较,这些值始终是一个字符串。

有人知道为什么他们不比较吗?

我的同事指出了这个问题。在之前的程序版本中,我们动态改变 ADDRESS_VALUE 的值。在这个最新版本中,我们将值更改为常量整数。

出现在这个版本中,在我们让ADDRESS_VALUE常量之前,它还在被赋新值,所以它实际上是在比较NAME_VALUE而不是在比较ADDRESS_VALUE这实际上会失败。

谢谢大家的评论。他们真的很有帮助。