我有一个程序需要逐行查看文本文件,这些行看起来像这样:
10-19-2015 Brett Reinhard All Bike Yoga Run the Studio Design Your Own Strength
它们由文本文件中的制表符分隔。
我想要做的是查看第二个值,在本例中为“Brett Reinhard”并将整行移至另一个名为“Brett Reinhard”的文本文件
我正在考虑使用数组来检查行中的第二个“列”是否与给定数组中的任何值匹配,如果是,我想执行特定操作。
我想这样做的方式是使用For / next语句,现在它将起作用,对于我将使用它的计算机来说将是一个费力的过程。
我正在考虑使用的代码如下所示:
For intCounter=0 to Whatever Number is the last number of the array
If currentfield.contains(array(intCounter)) Then
Open StreamWriter(File directory & array(intcounter) & ".txt")
Streamwriter.Writeline(currentfield)
End IF
是否有更好的方法,例如引用行中的第二个“列”,类似于VBA for excel中使用的语法。
Name=Cells(1,2).Value
答案 0 :(得分:0)
如果您可以保证一行只使用制表符作为字段分隔符,您可以执行以下操作:
如果您不确定格式,则需要点击并使用之前评论中提到的TextFieldParser。
答案 1 :(得分:0)
因此,虽然它没有使用数组来搜索文件,但我最终做的也是如此。由于@Martin Soles,我最终使用了拆分方法。
以下是我提出的建议:
Sub Main()
Dim intCount As Integer = 1
Dim words As String
Dim split As String()
Using MyReader As New Microsoft.VisualBasic.
FileIO.TextFieldParser(
"I:\Games, Events, & Promotions\FRP\Back End\Approved.txt")
MyReader.TextFieldType = FileIO.FieldType.Delimited
MyReader.SetDelimiters(",")
Dim currentRow As String()
While Not MyReader.EndOfData
Try
currentRow = MyReader.ReadFields()
Dim currentField As String
For Each currentField In currentRow
words = currentField
split = words.Split(New [Char]() {CChar(vbTab)})
For Each s As String In split
If intCount = 2 Then
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("I:\Games, Events, & Promotions\FRP\Back End\" & s & ".txt", True)
file.WriteLine(currentField)
file.Close()
End If
intCount = intCount + 1
Next s
intCount = 1
Next
Catch ex As Microsoft.VisualBasic.
FileIO.MalformedLineException
MsgBox("Line " & ex.Message &
"is not valid and will be skipped.")
End Try
End While
End Using
End Sub 'Main
谢谢你们的建议。
目前,split方法可以满足需要。