1

Visual Basic 中 if 子句的一个奇怪案例

在这里,我 正在检查WebBrowserEx1.Document.All.Item(t).OuterHtml 是否等于abc但尽管它们相同,但它不接受它们相同并且不执行 if 语句中的代码。盲人是我还是Visual Basic?

大图:http: //i.stack.imgur.com/hVjpH.png

编辑:

For t = 1 To WebBrowserEx1.Document.All.Count
    Dim abc = "<LI style=""PADDING-BOTTOM: 2px; PADDING-TOP: 2px"">Hata oluştu. İşlem tamamlanamamıştır. "
    If WebBrowserEx1.Document.All.Item(t).OuterHtml = abc Then
                        WebBrowserEx1.Navigate("http://uyg.sgk.gov.tr/vizite/tarihGiris.do")
       loc = "giris"
       WebBrowserEx1.Update()
       yeniSayfa = True

       Exit For
     End If
Next

手表中 WebBrowserEx1.Document.All.Item(t).OuterHtml 的值:“Hata oluştu.İşlem tamamlanamamıştır.”

手表中 abc 的价值:“Hata oluştu。İşlem tamamlanamamıştır。”

我认为大图应该更具解释性。

第二次尝试类型更正

For t = 1 To WebBrowserEx1.Document.All.Count
                    Dim abc As String
                    abc = "<LI style=""PADDING-BOTTOM: 2px; PADDING-TOP: 2px"">Hata oluştu. İşlem tamamlanamamıştır. "
                    If WebBrowserEx1.Document.All.Item(t).OuterHtml = abc Then
                        WebBrowserEx1.Navigate("http://uyg.sgk.gov.tr/vizite/tarihGiris.do")
                        loc = "giris"
                        WebBrowserEx1.Update()
                        yeniSayfa = True
                        Exit For
                    End If
                Next
4

4 回答 4

1

尝试规范化字符串。它们可能看起来相同,但具有不同的 Unicode 表示

If WebBrowserEx1.Document.All.Item(t).OuterHtml.Normalize() = abc.Normalize() Then
    ...
End If

abc正如String其他人已经指出的那样,类型推断似乎VB类型推断不如C#类型推断。)

于 2012-11-01T13:39:29.157 回答
1

测试Len()两个字符串的。如果它们不同,则存在一些空白问题。

否则(或在任何情况下找出差异开始的地方)逐个字符检查,直到找到差异。

于 2012-11-01T13:26:37.740 回答
1

注意右栏中每个对象的类型。由于 abc 变量的类型为“Object”,因此=运算符正在检查引用相等性。abc 引用的对象可能是一个字符串,但由于该变量只是作为一个对象键入,因此您可以得到引用比较。由于这两个对象不引用同一块内存,因此比较返回False. 将您的声明更改abc为如下所示:

Dim abc As String = "<LI ... "

其他一些需要寻找的东西:

  • 任何空白差异都不会显示在调试/监视窗口中,这可能会破坏变量的显示值以适应空间。试着点击放大镜仔细观察。
  • 我看到一些非ASCII字符。确保您使用完全相同的 unicode 代码点,否则比较可能会失败。
于 2012-10-31T13:30:59.057 回答
-1

尝试转换abcString.

dim abc as string

或者 ...

OuterHTML = cstr(abc)

我想问题在于ObjectString.

于 2012-10-31T13:32:08.073 回答