2015-10-04 68 views
-1

我想比较两个字符串,我知道彼此相等,但它总是跳到其他。我试过了所有的东西,.Equals,=,不,它们都不起作用!令人沮丧的是我知道弦乐是平等的!请看看我的代码,看看它是否可能有任何问题。等于不工作VB.Net

Public Class Form1 
    Dim log As String 
    WithEvents xworker As New System.ComponentModel.BackgroundWorker 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    xworker.RunWorkerAsync() 
End Sub 

Private Sub xWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles xworker.DoWork 
    Dim qWorker = CType(sender, System.ComponentModel.BackgroundWorker) 
    Dim client As New Net.WebClient 
    log = client.DownloadString("http://########/log.txt") 
End Sub 

Private Sub xWorker_Completed(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles xworker.RunWorkerCompleted 
    If log.Equals(RichTextBox1.Text) Then 
     xworker.RunWorkerAsync() 
    Else 
     RichTextBox1.Text = log 
     xworker.RunWorkerAsync() 
    End If 
End Sub 
End Class 
+1

它们可能并不相同。 – SLaks

+0

只是在发生比较的行上放置一个断点,并查看代码达到该点时的值。他们可能不是你所期望的 –

+0

事情是,他们是。我只是设置了一个断点并看到了两个变量。果然,他们都完全一样。 RichTextBox1.Text \t“log test 1234”\t字符串 |日志“log test 1234”字符串 – Jake

回答

1

你需要倾听@SLaks和@Hans Passant,他们对钱是正确的。

我设置你的代码示例,如果源log.txt文件中没有行结束符,它将正常工作。一旦我添加了行结束符,我得到了你正在得到的结果。

从命令窗口:

>? RichTextBox1.Text.Length 
14 
>? log.length 
15 

使用快速监视窗口,TABing直到值字段被选定:

登录结果:

"log test 1234" & vbCrLf & "" 

RichTextBox的结果:

"log test 1234" & vbLf & "" 

问题的修复取决于将实际写入log.txt文件的内容。我假设“log test 1234”只是开发代码。如果你只对一行代码感兴趣,那么确保你没有写行结束符。如果结果代码更复杂,那么您需要对结果进行更多解析,而不仅仅是Equals比较。

+0

我正在尝试远程登录一个服务器,它将每隔几秒钟不断写新行。远程计算机上的程序通过FTP将日志文件发送到Web服务器,然后程序读取它并在富文本框中显示给我。我使用此检查的全部原因是因为富文本框正在闪烁,可能是因为它正在更新得太快。我不想更改更新时间,因为我希望能够接近实时地看到它。 – Jake

0

试试这个。

如果log.ToLower()。修剪()= RichTextBox1.Text.ToLower()。修剪(),然后

0

我认为这是区分sensitve比较。应首先在串转换为大写或降低,然后比较它们

If Log.ToLower() = RichTextBox1.Text.ToLower() Then 

或者你可以使用String.Compare方法,并设置第三个参数去真正忽略大小写

If String.Compare(log, RichTextBox1.Text, True) = 0 Then 
+0

我现在可以看到问题是由于字符串每秒更新而引起的。只要我加载了将程序日志发送到Web服务器的程序,它就开始说它们并不相同,即使没有任何改变。 – Jake

0

我已经读取RichTextBox可以在文本被设置时更改行结束符。所以Text属性可能会返回一个与设置不同的字符串。我无法验证,但你可以设计一个这个理论的快速测试。