如何读取制表符分隔文件以查找具有已知值的行?

时间:2015-04-23 18:13:15

标签: vb.net

我有一个制表符分隔文件,其中包含这样的数据......

022j<TAB>10.375
023j<TAB>12.365
024j<TAB>15.230

注意:这不会让我发布,因为它是...每个02xj是文本文件中的不同行。它

EG:023j输入文本框。

需要找到与输入相关的值;在这种情况下为12.365。

有一些不同的文件(有些是编码012j,012#,012 $等,它们对应不同的数据。)

我的脑袋正在爆炸,试图找到一种方法来获取我在文本框中的内容,然后阅读并找到我需要的数据。

我知道这很容易,请在正确的方向上推动我。

2 个答案:

答案 0 :(得分:0)

这是你的轻推。你应该可以使用这样的东西:

Dim searchValue As Decimal = 023j 'or someTextBox.Text whatever
Dim searchField As Int32 = 0
Dim returnField As Int32 = 1
Dim returnValue As String = ""
Dim returnLineNumber as Int32 = 0

Using fileReader As New FileIO.TextFieldParser(YourFileNameWithPathAsString)
    fileReader.TextFieldType = FileIO.FieldType.Delimited
    fileReader.SetDelimiters(vbTab)
    While Not fileReader.EndOfData
        Dim currentLine As String() = fileReader.ReadFields()
        If currentLine(searchField) = searchValue Then
            returnValue = currentLine(returnField)
            returnLineNumber = fileReader.LineNumber
            Exit While
        End If
    End While
End Using

Return returnValue 'or Return returnLineNumber if that is what you need

你应该可以使它成为一个函数,如果没有返回结果,那么检查你的下一个文件。

答案 1 :(得分:0)

我想出来了......所以这就是我最终要做的事情。

首先设置streamreader

'set reader to read the file
        Dim reader As New System.IO.StreamReader(filetoread)

然后逐行循环遍历文件,使用contains查找要匹配的字符串。做任何修剪/提取,你就在那里。

Do While reader.Peek() >= 0

        line = reader.ReadLine

        If line.Contains(TB_Input.Text) Then
            s = Replace(line, TB_Input.Text, "")
            s = Replace(s, vbTab, "")
            TB_Length.Text = s
        End If
    Loop

我正在泄漏脑汁。直到有人基本上说“做到这一点”......谢谢我需要的。  我知道有些变量我不解释......我想任何看起来都会知道,如果这是一个错误的假设让我知道。

再次感谢