2014-01-10 8 views
4

波紋管我有一些代碼需要RichTextBox1文本並將其放置在列表框中。我這樣做是爲了逐行閱讀文本,當檢查這個時,我把文本放在一個數組中,這樣我就可以檢查文本和空格。這一切都正常工作然而,當我輸入一個命令,如'控制檯只輸出Hello和其他東西,即使我想打印'你好我的名字是'。所以,問題是第三空間如何從列表框中的某個點之後讀取文本?

ListBox1.Items.Clear() 
///RTB = rich Text Box 

     ListBox1.Items.AddRange(RTB.Lines) 
      For i = 0 To ListBox1.Items.Count - 1 
      Dim teststring As String = ListBox1.Items.Item(i) 
      Dim testarray() As String = Split(teststring) 

      If testarray(0) = "Print" Then 
       If testarray(1) = "=" Then 
        Console.WriteLine(testarray(2)) 
       End If 
      End If 

任何幫助將不勝感激

回答

4

好後打印,您只需通過「」分開,所以這是預期的行爲。它只做你告訴它做的事。

你可能需要看看使用正則表達式來正確地實現這種解析。

這應該讓你開始:

Imports System.Text.RegularExpressions 

Module Module1 
    Sub Main() 
    Dim s As String = "Print = Hello My Name is" 
    Dim re As New Regex("(.*)=(.*)") 

    Dim m As Match = re.Match(s) 
    Console.WriteLine(m.Groups(2).Value.Trim) '=Console.WriteLine(testarray(2)) 
    End Sub 
End Module 

正如在註釋中,最後一行應該打印你所期望的。

+1

非常感謝提供的代碼工作很大一些適應。謝謝 – user2874682

0

問題是你打電話Split沒有額外的參數,所以,默認情況下,它分裂的空間。這意味着您的testarray將在該行中包含每個單詞的一個元素。爲了解決這個問題,你可以只拆分的=字符,像這樣:

If testString.Contains("=") Then 
    Dim testArray() As String = teststring.Split("="c) 
    If testArray(0) = "Print" Then 
     Console.WriteLine(testArray(1)) 
    End If 
End If 

而且,上面的代碼纔會正常,如果有單詞「打印」和等號之間沒有空格的工作。爲了處理它們之間的空白,你需要在分割它們之後修剪這些值。

但是,如果要打印的字符串不包含等號,則它才能正常工作。如果這是一個問題,你可以做這樣的事情:

Dim index As Integer = testString.IndexOf("=") 
If index >= 0 Then 
    If testString.Substring(0, index).TrimEnd() = "Print" Then 
     Console.WriteLine(testString.Substring(index + 1).TrimStart()) 
    End If 
End If 

通常情況下,我建議考慮使用正則表達式這樣的事情,但是因爲我收集,你是一個初學者,這可能有點現在就爲你升級。

我還應該提到,您不需要使用ListBox來保存行。你可以把它們放在內存中的數組中。或者,更好的是,你可以通過豐富的文本框的Lines屬性的返回值只是循環直接,而不是一個變量將其存儲在所有的,例如:

For Each line As String In RTB.Lines 
    Dim index As Integer = line.IndexOf("=") 
    If index >= 0 Then 
     If line.Substring(0, index).TrimEnd() = "Print" Then 
      Console.WriteLine(line.Substring(index + 1).TrimStart()) 
     End If 
    End If   
Next 
相關問題