2011-06-20 20 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

哇,谢谢,不期待一个完整的代码,但我认为这是完美的。担 –