在VB.NET中编辑某些文件
我有两个文本文件,在VB.NET中编辑某些文件,.net,vb.net,vb.net-2010,.net,Vb.net,Vb.net 2010,我有两个文本文件,C:\Test1.txt和C:\Test2.txt C:\Test1.txt数据由一列组成,列之间用空格(“”)分隔: 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 Merced
C:\Test1.txt
和C:\Test2.txt
C:\Test1.txt
数据由一列组成,列之间用空格(“”)分隔:
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
BMW White
Mercedez Silver
Bentley Black
Audi Blue
Honda Gold
运行代码后:
C:\Test2.txt
BMW
Mercedez
Bentley
Audi
Honda
BMW White
Mercedez Silver
Bentley Black
Audi Blue
Honda Gold
因此,您只想在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)
请注意,对于异常数据来说,它还不安全。因此,从技术角度来说,您的任务是(根据最初的问题和评论):
- 假设第一个文件是汽车定制颜色的字典
- 假设第二个文件是make的列表
- 您需要使用第一个文件找到这些品牌的匹配项
- 忽略两个输入文件中的空行
- 如果找不到make,请将空字符串作为颜色
'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按预期工作后,您可以更改代码以替换该文件。您好,不,这不是家庭作业。对不起,到目前为止,我如何发布我的代码?我在苦苦挣扎:(蒂姆,这个编码看起来不错。1)忽略任何空行会很困难吗?2)如果在另一个文本文件中找不到汽车,那么就让它保持空白吗?@user1413746:有什么困难吗?如果您至少使用.NET3.5,您可以复制/粘贴它。正如我已经提到的,如果你的文件包含更多的空格,这是不安全的。但无论如何,它应该给你一个想法。基本上,它是用文件1中的匹配行覆盖文件2中的所有行(根据汽车)。