我有一个制表符分隔文件,其中包含这样的数据......
022j<TAB>10.375
023j<TAB>12.365
024j<TAB>15.230
注意:这不会让我发布,因为它是...每个02xj是文本文件中的不同行。它
EG:023j输入文本框。
需要找到与输入相关的值;在这种情况下为12.365。
有一些不同的文件(有些是编码012j,012#,012 $等,它们对应不同的数据。)
我的脑袋正在爆炸,试图找到一种方法来获取我在文本框中的内容,然后阅读并找到我需要的数据。
我知道这很容易,请在正确的方向上推动我。
答案 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
我正在泄漏脑汁。直到有人基本上说“做到这一点”......谢谢我需要的。 我知道有些变量我不解释......我想任何看起来都会知道,如果这是一个错误的假设让我知道。
再次感谢