从一个文件中读取文本,以检查其他文本文件是否匹配
Reading text from one file, to check other text file for matches
所以我是 VB.NET 的新手,我正在尝试通读 2 个单独的文本文件。首先是 File2 并从中提取一个变量。然后我想获取该变量,并检查 File1 以查看字符串是否匹配。这两个文件都比较大,我必须从头开始 trim 部分字符串,因此进行了多次拆分。所以目前,这就是我所拥有的。但是我被挂断的地方是,如何让它检查每一行以查看它是否与其他文件匹配?
Public Function FileWriteTest()
Dim file1 = My.Computer.FileSystem.OpenTextFileReader(path)
Dim file2 = My.Computer.FileSystem.OpenTextFileReader(path)
Do Until file2.EndOfStream
Dim line = file2.ReadLine()
Dim noWhiteSpace As New String(line.Where(Function(x) Not Char.IsWhiteSpace(x)).ToArray())
Dim split1 = Split(noWhiteSpace, "=")
Dim splitStr = split1(0)
If splitStr.Contains(HowImSplittingText) Then
Dim parameter = Split(splitStr, "Module")
Dim finalParameter = parameter(1)
End If
'Here is where I'm not sure how to continue. I have trimmed the variable to where I would like to check with the other file.
'But i'm not sure how to continue from here.
这里有一些清理说明:
- 使用 IO.File.ReadAllLines (documentation)
获取第一个文件的行
- 使用IO.File.ReadAllText获取第二个文件的文本(documentation)
- 使用 String.Replace (documentation) 而不是 Char.IsWhitespace,这样会更快并且更明显地说明正在发生的事情
- 使用 String.Split (documentation) 而不是 Split(因为这是 2021 年而不是 1994 年)。
就您接下来要做什么而言,您将在第二个文件的文本上调用 String.IndexOf (documentation),传递您的变量值,以查看它是否 returns值大于 -1。如果是,那么您就知道该值存在于文件中的什么位置。
这是一个例子:
Dim file1() As String = IO.File.ReadAllLines("path to file 1")
Dim file2 As String = IO.File.ReadAllText("path to file 2")
For Each line In file1
Dim noWhiteSpace As String = line.Replace(" ", String.Empty)
Dim split1() As String = noWhiteSpace.Split("=")
If (splitStr.Length > 0) Then
Dim splitStr As String = split1(0)
If splitStr.Contains(HowImSplittingText) Then
Dim parameter() As String = splitStr.Split("Module")
If (parameter.Length > 0) Then
Dim finalParameter As String = parameter(0)
Dim index As Integer = file2.IndexOf(finalParameter)
If (index > -1) Then
' finalParameter is in file2
End If
End If
End If
End If
Next
所以我是 VB.NET 的新手,我正在尝试通读 2 个单独的文本文件。首先是 File2 并从中提取一个变量。然后我想获取该变量,并检查 File1 以查看字符串是否匹配。这两个文件都比较大,我必须从头开始 trim 部分字符串,因此进行了多次拆分。所以目前,这就是我所拥有的。但是我被挂断的地方是,如何让它检查每一行以查看它是否与其他文件匹配?
Public Function FileWriteTest()
Dim file1 = My.Computer.FileSystem.OpenTextFileReader(path)
Dim file2 = My.Computer.FileSystem.OpenTextFileReader(path)
Do Until file2.EndOfStream
Dim line = file2.ReadLine()
Dim noWhiteSpace As New String(line.Where(Function(x) Not Char.IsWhiteSpace(x)).ToArray())
Dim split1 = Split(noWhiteSpace, "=")
Dim splitStr = split1(0)
If splitStr.Contains(HowImSplittingText) Then
Dim parameter = Split(splitStr, "Module")
Dim finalParameter = parameter(1)
End If
'Here is where I'm not sure how to continue. I have trimmed the variable to where I would like to check with the other file.
'But i'm not sure how to continue from here.
这里有一些清理说明:
- 使用 IO.File.ReadAllLines (documentation) 获取第一个文件的行
- 使用IO.File.ReadAllText获取第二个文件的文本(documentation)
- 使用 String.Replace (documentation) 而不是 Char.IsWhitespace,这样会更快并且更明显地说明正在发生的事情
- 使用 String.Split (documentation) 而不是 Split(因为这是 2021 年而不是 1994 年)。
就您接下来要做什么而言,您将在第二个文件的文本上调用 String.IndexOf (documentation),传递您的变量值,以查看它是否 returns值大于 -1。如果是,那么您就知道该值存在于文件中的什么位置。
这是一个例子:
Dim file1() As String = IO.File.ReadAllLines("path to file 1")
Dim file2 As String = IO.File.ReadAllText("path to file 2")
For Each line In file1
Dim noWhiteSpace As String = line.Replace(" ", String.Empty)
Dim split1() As String = noWhiteSpace.Split("=")
If (splitStr.Length > 0) Then
Dim splitStr As String = split1(0)
If splitStr.Contains(HowImSplittingText) Then
Dim parameter() As String = splitStr.Split("Module")
If (parameter.Length > 0) Then
Dim finalParameter As String = parameter(0)
Dim index As Integer = file2.IndexOf(finalParameter)
If (index > -1) Then
' finalParameter is in file2
End If
End If
End If
End If
Next