我有两个文本文件,C:\Test1.txt
和C:\Test2.txt
。
C:\Test1.txt
数据由一个以空格(“”)分隔的列组成:
Data Data
Data Data
Data Data
C:\Test2.txt
数据包含:
Data
Data
Data
Test2第1列中的字段是第1列Test1中的字段。我正在尝试添加Test1中的匹配字段。例如:
C:\个Test1.txt
Mercedez Silver
Bentley Black
Audi Blue
BMW White
Honda Gold
C:\的test2.txt
BMW
Mercedez
Bentley
Audi
Honda
运行代码后:
C:\的test2.txt
BMW White
Mercedez Silver
Bentley Black
Audi Blue
Honda Gold
答案 0 :(得分:3)
所以你只想找到txt2中同样位于txt1的所有车辆,并覆盖txt1中txt2中的行。然后这应该工作:
Dim l1Infos = From l1 In IO.File.ReadAllLines("C:\Test1.txt")
Select New With {.Line = l1, .Tokens = l1.Split(" "c)}
Dim result = From l1 In l1Infos
Join l2 In IO.File.ReadAllLines("C:\Test2.txt")
On l1.Tokens(0) Equals l2
Select l1.Line
IO.File.WriteAllLines("C:\Test2.txt", result)
请注意,这对于特殊数据来说还不安全。
答案 1 :(得分:0)
所以你的技术术语是这个(根据原始问题和评论):
旧学校的解决方案可以分为三部分:
'read the first file into a dictionary of make to color
Dim dict As New Dictionary(Of String, String)
For Each line As String In IO.File.ReadAllLines("C:\Test1.txt")
Dim a() As String = line.Split({" "}, StringSplitOptions.RemoveEmptyEntries)
If a.Length = 0 Then Continue For 'ignore blank lines
Dim key As String = a(0)
Dim value As String = a(1)
dict.Add(key, value)
Next
'find matches for makes listed in the second file and prepare output
Dim outputLines As New List(Of String)
For Each key As String In IO.File.ReadAllLines("C:\Test2.txt")
If key = String.Empty Then Continue For 'ignore blank lines
Dim value As String = Nothing
dict.TryGetValue(key, value) 'leave Color blank if not found
outputLines.Add(String.Format("{0} {1}", key, value))
Next
'write output
IO.File.WriteAllLines("C:\Test3.txt", outputLines)
专为可扩展性而设计,可以根据您的需求轻松调整上述内容。请注意,我输出到另一个文件(#3)。这是为了测试目的而保留输入。如果出现问题,您希望保留输入,并且需要快速修复&重新运行该程序。在确定文件按预期工作后,您可以更改代码以替换文件#2。