VB.NET从指定文件夹中的多个文本文件中获取特定字符串

时间:2013-03-14 10:44:35

标签: vb.net file

我今天刚开始学习VBnet。

情况如下:

我有一个文件夹,其中包含名为data1 data2等的文本文件(约100个)。

每个文件都包含一个序列号:

示例:

在data1.txt

HSB1序列号111222

在data2.txt

HSB1序列号987632

等。

我制作了一个VB.Net程序,让用户使用FolderBrowserDialog指定txt文件的文件夹位置。

我不知道的是如何只在文本框中显示序列号。

单击执行按钮时应该执行该命令。提前谢谢!

到目前为止,这就是我所拥有的,对不起,我很陌生,但我必须尽快制定这个计划。

Public Class Form1

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim folderDlg As New FolderBrowserDialog
    folderDlg.ShowNewFolderButton = True
    If (folderDlg.ShowDialog() = DialogResult.OK) Then
        TextBox1.Text = folderDlg.SelectedPath
        Dim root As Environment.SpecialFolder = folderDlg.RootFolder
    End If
End Sub

Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk

End Sub

Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

End Sub

Private Sub Execute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Execute.Click

End Sub

结束班

2 个答案:

答案 0 :(得分:1)

如果您的文件只有一行文字,并且每行都按照您的说明进行格式化,则此示例应该有效

Dim fileList = Directory.GetFiles(TextBox1.Text, "*.txt", false)
Dim sb = New StringBuilder()
For Each fileName in fileList
    Dim lines = File.ReadAllLines(fileName)
    if lines.Length > 0 then
        Dim part = lines[0].Split(" "c)
        if part.Length > 2 Then
            sb.AppendLine(part(3))
        End If
    End If
Next
TextBox2.Text = sb.ToString()

TextBox2是您要显示搜索结果的文本框。它的属性MultiLine应设置为True,垂直滚动条(使用设计器设置它们)

代码使用一些静态方法,如Directory.GetFiles和File。ReadAllLines以及类StringBuilder的实例来缓冲所有读取,只需一个附加到目标TextBox

答案 1 :(得分:0)

此代码应该有效,如果文件名和序列号的模式与您在问题中给出的相同,

  Private Sub Execute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Execute.Click

     For Each xFile In Directory.GetFiles(TextBox1.Text, "*.txt", false)
         'Textbox2 is the resultant textbox.
         TextBox2.Text &= space(2) & File.ReadAllLines(xFile)(0).Substring(File.ReadAllLines(xFile)(0).Length - 6, 6)
     Next

    End Sub

已编辑根据您的评论:The one that I gave is just the first line.