2014-04-03 53 views
0

我不知道爲什麼會這樣,但是我有一些代碼,搜索文本框形式的字符串上:字符串VB.net搜索文本框和返回一次

Dim strLines() As String = strText.Split(CChar(Environment.NewLine)) 
    Dim i As Integer 
    Dim strRet As String = "" 

    For j As Integer = 0 To strLines.Length - 1 
     i = strLines(j).IndexOf("&&&") 
     If i >= 0 Then 
      strRet &= strLines(j).Substring(i + 3) & Environment.NewLine 
     End If 
     If strRet.Length > 0 Then 
      If txtConsole.TextLength > 0 Then 
       Call ClearCon() 
      End If 

      rtxtDefinition.Text = "" 

      txtWrdDefn.Text = strRet 

      Dim sourceString As String = New System.Net.WebClient().DownloadString("http://api.urbandictionary.com/v0/define?term=" & strRet) 

      rtxtDefinition.Text = sourceString 

這一切都是經過只是處理它,並且工作正常。問題是這從遊戲中得到它的信息,在這個遊戲中你無法清除控制檯,所以它一直在搜索它一直保持返回相同的定義。有沒有辦法來防止這種情況發生,因爲遊戲機無法清除?

+0

難道你不能只保存字符串中的最後一個位置,該位置已經包含在靜態變量的搜索中,並且剛開始在下一次搜索該索引時,而不是從0開始? – Jens

+0

所以你說第一次掃描它,然後如果它找到一個,保存位置(使用IndexOf?),提取文本和所有,然後以某種方式開始搜索,但從IndexOf? – Pure

+0

當您找到&&&字符串時,使用「Static」關鍵字在子內部或內部創建一個變量,並將索引j保存在那裏。然後用'For j As Integer = LastFoundAt to strLines.Length - 1'替換'For j As Integer = 0 to strLines.Length - 1'。 – Jens

回答

0

正如我在評論中指出,在這裏與代碼:

Public Class Form1 

Dim LastSearchEnd As Integer = 0 'This variable keeps it's value, it's initialized with the value 0 on program start 
Private Sub SearchStuff() 
    Dim strLines() As String = Strings.Split(TextBox1.Text, Environment.NewLine) 'Split the text into lines 
    For i = LastSearchEnd To strLines.Count - 1 'Start at the value you kept 
     If strLines(i).Contains("&&&") Then 'Found the value 
      MsgBox("FOUND IT!!") 
      LastSearchEnd = i + 1 'We actually keep i+1 because we don't want to search the same line twice 
      Exit For 
     End If 
    Next 
End Sub 

End Class 

這是一個細分的例子,因爲我想你想要的東西。

+0

我知道它已經有一段時間了,但我一直在努力,並且無法正常工作。我應該開始一個新的線程? – Pure