在多个文本文件中搜索相似数据

时间:2018-12-22 19:29:39

标签: arrays vb.net data-manipulation

我有多个具有相似数据的文本文件,例如file1将具有以下条目:

test1,1400

然后file2将具有:

test1,2400

由于所有这些文件都是由不同的程序生成的,因此可以检查每个文本文件中的相似条目,例如使用上述文件,例如,我想从两个文件中查找test1并计算得分,然后将以下数据保存到另一个文本文件中:

test1,3800

我正在使用的编程语言是VB.NET,目前我已经使用以下方法读取了所有文件:

Dim Array1() As String = IO.File.ReadAllLines("path")

我当前的逻辑是将所有数据放入列表或KeyValuePair,列表中将存储用户的用户名以及他们的分数(此时将它们相加)。我目前已将每个文本文件中的所有数据读到一个数组,在FormLoad事件中,每个数组都已整理成一种形式,其中数据用逗号分隔符分隔。在程序开始时,我有一个输入框,它要求用户输入用户名并将其存储在名为UserInput的变量中。从那里,这是我需要帮助的目标,我需要程序从每个数组中获取价值并将其存储在另一个数组中,在该数组中,我可以使用他们的得分对每个用户的数据进行排序:For i = 0 to ar.length - 1遍历数组并搜索“用户名”。

2 个答案:

答案 0 :(得分:2)

您可以使用以下方法

    plt.stackedplot()

上述方法会在您的桌面上创建一个新的文本文件“ output.txt”。

答案 1 :(得分:0)

AJD是正确的。您需要在发布之前尝试一下。我回答了,因为我想和Linq一起练习。由于您有2种不同类型的数据,因此按顺序排列一个类或结构(或使用数据库)。我通过将行分为字符串部分和整数部分来填充结构列表;设置结构的属性。您可以将任意数量的文件添加到列表中。我同时使用Linq方法和Loop方法进行了测试。

Structure TestData
    Public TestName As String
    Public TestScore As Integer
End Structure

Private TestList As New List(Of TestData)

Private Sub AddToList(path As String)
    Dim arr() As String = File.ReadAllLines(path)
    For Each line As String In arr
        Dim arr2() As String = line.Split(","c)
        Dim td As TestData
        td.TestName = arr2(0)
        td.TestScore = CInt(arr2(1).Trim)
        TestList.Add(td)
    Next
End Sub

Private Function GetSummWithLinq(NameOfTest As String) As Integer
    Dim result As Integer = (From Score In TestList
                             Where Score.TestName = NameOfTest
                             Select Score.TestScore).Sum
    Return result
End Function

Private Function GetSumWithLoop(NameOfTest As String) As Integer
    Dim total As Integer
    For Each item In TestList
        If item.TestName = NameOfTest Then
            total += item.TestScore
        End If
    Next
    Return total
End Function

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim p As String = "C:\Users\SomeUser\Desktop\TestData.txt"
    AddToList(p)
    Dim a As Integer = GetSummWithLinq("test1")
    MessageBox.Show($"The Linq method produces {a}")
    Dim b As Integer = GetSumWithLoop("test1")
    MessageBox.Show($"The Loop method produces {b}")
End Sub

编辑 我用来测试代码的TestData.txt文件。

test1, 314 
test2, 740 
test1, 700 
test2, 200