我有两个文本文件。每个文本文件中的字段由空格 (" ") 分隔。文件 1 的第 1 列中的某些字段与文件 2 的第 1 列中的字段匹配。但是,文件 2 中的第三列是数字字段。我想要做的是检查 file1 中的每个字段与文件 2 中的字段,如果数字为 1,则从文件 2 中删除该行,如果数字大于 1,则从中减去一个。
到目前为止,我有以下编码。
Dim lines1 As New List(Of String)(IO.File.ReadAllLines("File1"))
Dim lines2 As New List(Of String)(IO.File.ReadAllLines("File2"))
Dim values As New Dictionary(Of String, Integer)()
For Each line As String In lines1
Dim fields() As String = line.Split(ControlChars.Tab)
If fields.Length > 1 Then
values(fields(0)) = Integer.Parse(fields(1))
End If
Next
For Each line As String In lines2
Dim fields() As String = line.Split(ControlChars.Tab)
If fields.Length > 0 Then
If values.ContainsKey(fields(0)) > 1 Then
values(fields(0)) = values(fields(0)) - 1
Else
values.remove(fields(0))
End If
End If
Next
lines1.Clear()
For Each pair As KeyValuePair(Of String, Integer) In values
lines1.Add(pair.Key + ControlChars.Tab + pair.Value.ToString())
Next
IO.File.WriteAllLines("File2", lines1.ToArray)
例如
File1
String1 String
String2 String
String5 String
String8 String
File2
String1 String 6
String2 String 8
String3 String 2
String4 String 2
String5 String 1
String6 String 4
String7 String 8
String8 String 1
在我的代码运行之后
File1
String1 String
String2 String
String5 String
String8 String
File2
String1 String 5
String2 String 7
String3 String 2
String4 String 2
String6 String 4
String7 String 8