vb.net - 比较两个文本文件并检索特定值

时间:2017-09-06 10:02:14

标签: vb.net visual-studio datagrid

此问题与我以前的问题有关

我目前正在制作一份注册表格,其中学生的所有详细信息都保存在文本文件中。

我使用文本文件填充了组合框。

这些值的格式例如是:(代码〜学校名称)SCH001~Saint 托马斯学院

这就是我在文本文件中保存详细信息的方式:

Dim firstname, lastname, email, mobile, level, currentschool, currenttrack, institution1, institution2, institution3, institution4, institution5, institution6, courses1, courses2, courses3, macaddress, eventcode, idseq, filename, logfiledirectory, targetdirectory, log, configdir, printschool As String
    firstname = txtFName.Text
    lastname = txtLName.Text
    email = txtEmail.Text
    mobile = txtMobile.Text
    level = cmbLevel.Text
    currenttrack = cmbCurrentTrack.Text
    printschool = cmbCurrentSchool.Text
    currentschool = cmbCurrentSchool.SelectedValue
    institution1 = cmbInstitution1.SelectedValue
    institution2 = cmbInstitution2.SelectedValue
    institution3 = cmbInstitution3.SelectedValue
    institution4 = cmbInstitution4.SelectedValue
    institution5 = cmbInstitution5.SelectedValue
    institution6 = cmbInstitution6.SelectedValue
    courses1 = cmbCourse1.SelectedValue
    courses2 = cmbCourse2.SelectedValue
    courses3 = cmbCourse3.SelectedValue

    If mobile = "" Then
        mobile = "09000000000"
    End If

    If firstname = "" Or lastname = "" Or email = "" Or level = "" Or currentschool = "" Or currenttrack = "" Then
        MessageBox.Show("Please enter the required fields!", "Registration", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

我有一个datagridview,其中显示了文本文件中所有已保存的详细信息。 这是我的datagridview的截图: enter image description here

我想做什么:我想使用当前学校代码(参考图像)从源文本文件(我用来填充组合框的那个)中检索学校名称。我希望学校名称显示在datagridview中,而不是学校代码。 有可能这样做吗?

我希望你们明白我想说的是什么。 我是新来的。

2 个答案:

答案 0 :(得分:2)

再次就像我上次回答一样,使用此功能:

Function FetchSchoolName(schoolcode As String, filepath As String) As String
    Dim filecontents = File.ReadAllLines(filepath)
    For Each line As String In filecontents
        If (line.Contains(schoolcode.Trim())) Then
            Return line.Split("~"c)(1)
        End If
    Next
    Return String.Empty
End Function 

示例文字条目:

sch001~abcinstitute
sch002~myacademy
sch003~someschoolname

然后传递学校代码(从datagridview获得)和最顶层函数中的filepath

MessageBox.Show(FetchSchoolName("sch002", "C:\Users\nobody\Desktop\somefile.txt"))

输出:

  

myacademy

现在关于你的DataGridView,无论你在哪里填充(源绑定),都使用上面的方法

答案 1 :(得分:1)

如果你想产生与Nobody的答案相同的输出但没有循环,你可以使用LINQ,这也使用较少的代码行但实现相同的输出

Dim query = filecontents.Where(Function(x) x.Contains(schoolcode)).Select(Function(x) x.Split("~")(1)).FirstOrDefault
Return query.ToString()