2016-09-30 28 views
1

我有一个由管道分隔的文本文件。我想读第五管道的价值,但我不知道如何做到这一点。我所能做的就是读取数组的每一部分。找不到这方面的例子。VB读取分​​隔文本文件阵列

EPD|TR2999-01G|SEMI, TRANS, P-CH, SEL|ACTIVE|PS.COE.6|SCS|SCREENEDCOMPONENTS|EPP|Buy|6.237|916.839|147||181|||CCACOE||PS.777.||150||                                
    EPD|TR2309-01G|SEMI, TRANS, P-CH, SEL|ACTIVE|PS.COE.6|SCS|SCREENED COMPONENTS|EPP|Buy|6.237|193.347|31||181|||777||PS.777.||150|| 
+0

你是什么意思?将每一行分成一个数组并读取第五个值正是您需要实现的目标......那么该方法有什么问题,或者该方法不适用于您? – soohoonigan

+2

[CSV文件在.Net中的导入]可能的重复(http://stackoverflow.com/questions/1898/csv-file-imports-in-net) – GSerg

+0

下面是最可能使用的文件的几行代码。在这一个中,部件号在第二根管子之前。该值在第10根管子之前。 EPD | TR2999-01G | SEMI,TRANS,P-CH,SEL | ACTIVE | PS.COE.6 | SCS |屏蔽式组件| EPP |购买| 6.237 | 916.839 | 147 || 181 ||| CCACOE || PS.777 || 150 || EPD | TR2309-01G | SEMI,TRANS,P-CH,SEL |活动| PS.COE.6 | SCS |筛选组件| EPP |购买| 6.237 | 193.347 | 31 || 181 ||| 777 || PS。 777. || || 150 – Noob2Java

回答

0

该示例在它使用具有这些两行的文本文件:

线路1: EPD | TR2999-01G | SEMI,TRANS,P-CH,SEL | ACTIVE | PS .COE.6 | SCS |屏蔽组件| EPP |购买| 6.237 | 916.839 | 147 || 181 ||| CCACOE || PS.777。| | 150 ||

线路2: EPD | TR2309-01G | SEMI,TRANS,P-CH,SEL |活动| PS.COE.6 | SCS |屏蔽部件| EPP |购买| 6.237 | 193.347 | 31 || 181 | || || 777 PS.777。|| || 150

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim fp as string = "" 'enter the full path to your file here 
    Dim value as string = GetValueForPart(fp, Me.TextBox1.Text) 
    MsgBox(value) 'in this example, value is set to "6.237" when textbox input is "TR2999-01G" 
End Sub 

Private Function GetValueForPart(ByVal filepath As String, ByVal SearchPartNum As String) As String 
    If Not File.Exists(filepath) Then Return Nothing 
    If SearchPartNum Is Nothing OrElse SearchPartNum.Trim = "" Then Return Nothing 
    Dim ret As String = Nothing 
    Using sr As New StreamReader(filepath) 
     Do While sr.Peek >= 0 
      Dim line() As String = sr.ReadLine.Split(CChar("|")) 
      If line IsNot Nothing AndAlso line.Count >= 5 Then 
       If line(1).Equals(SearchPartNum) Then 
        ret = line(9) 
        Exit Do 
       End If 
      End If 
     Loop 
    End Using 
    Return ret 
End Function 

我只是测试这一点,所有你需要做的是进入第二行的完整文件路径

+0

这是我需要的,谢谢。现在我正在尝试搜索位于第三个管道之前的同一文件中的部件号,然后读取该行中的第5个值。 – Noob2Java

+0

为此添加代码作为编辑 – soohoonigan

+0

这让我走上了正轨......我感谢您的帮助。我如何从一个按钮调用这个功能? – Noob2Java