2011-06-20 57 views
0

我有一個任務,我想完成,但不能想到如何處理它。VB解析字符串並放入文本框

這裏是例子:

我與它喜好的文本文件。我讀的文件,並找到在這樣一個特定的一行文字:

If InStr(sLine, "avidDirectory") Then 

這是我在文本文件行:

avidDirectory "S:\Avid MediaFiles\" "D:\Avid MediaFiles\" "Z:\Avid MediaFiles\" 

我需要做的就是閱讀quoations標記之間每串什麼並將每個放置在文本框中。

我有5個文本框,如果有上面(在上面的例子中只有三個)

所以我想我需要捕捉引號之間的文本,5個不同的目錄來使用,從它創建一個新的字符串並將該字符串放入文本框中

即; string 1 = textbox1.txt etc

我該如何處理?

謝謝。

+0

舊函數調用像INSTR()的替代形式的代碼。網絡代碼是一種代碼味道。對於這個問題,類型前綴也是如此。現代代碼中的「If」行應該如下所示:'如果line.Contains(「avidDirectory」)然後' –

+0

什麼是代碼異味Joel? –

+1

代碼氣味本身並不完全_wrong_,但仍然看起來很古怪,以至於您認爲您可能需要仔細查看該代碼和周圍的代碼才能確定。 –

回答

2

創建一個新的Windows應用程序,添加一個按鈕和五個文本框,你將要啓動的形式以及與此代碼

Public Class Form1 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim txt As String = "avidDirectory ""S:\Avid MediaFiles\"" ""D:\Avid MediaFiles\"" ""Z:\Avid MediaFiles\""" 
     Dim insideAQuotation As Boolean = False 
     Dim array(5) As String 
     Dim currentString As Integer = 0 


     For i = 1 To Len(txt) 
      If Mid(txt, i, 1) = Chr(34) And insideAQuotation Then 
       insideAQuotation = False 
       currentString += 1 
      ElseIf Mid(txt, i, 1) = Chr(34) And insideAQuotation = False Then 
       insideAQuotation = True 
      End If 

      If insideAQuotation Then 
       If Mid(txt, i, 1) <> Chr(34) Then 'This is to avoid the quotation marks inside the text boxes. 
        array(currentString) &= Mid(txt, i, 1) 
       End If 
      End If 
     Next 

     Me.TextBox1.Text = array(0) 
     Me.TextBox2.Text = array(1) 
     Me.TextBox3.Text = array(2) 
     Me.TextBox4.Text = array(3) 
     Me.TextBox5.Text = array(4) 



    End Sub 
End Class 
+0

哇,謝謝,不期待一個完整的代碼,但我認爲這是完美的。擔 –