2015-10-04 112 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屬性可能會返回一個與設置不同的字符串。我無法驗證,但你可以設計一個這個理論的快速測試。