如何使用VB.NET按关键字匹配两个文本文件并实现内容更新?
VB.NET中对比两个文本文件并更新内容的实现方案
先明确需求:用File2中的对应值更新File1的内容,同时根据不同情况添加备注,示例文件如下:
示例文件
File1内容:
SSN1 AA SSN2 BB SSN3 CC SSN4 SSN5 DD
File2内容:
SSN1 ZZ SSN3 SSN5 YY
期望输出:
SSN1 ZZ SSN2 BB - 未更新:因File2中无此条目 SSN3 CC - 未更新:因File2中对应值为空 SSN4 - 未更新:因File2中无此条目 SSN5 YY
实现步骤与代码
1. 读取File2到字典
把File2的内容加载到Dictionary(Of String, String)中,通过SSN快速查找对应更新值,提升效率:
' 初始化字典存储File2的SSN和对应值 Dim file2Dict As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase) ' 读取File2的每一行 For Each line In File.ReadAllLines("File2.txt") If String.IsNullOrWhiteSpace(line) Then Continue For ' 按空白字符拆分(支持多个空格/tab分隔) Dim parts = line.Split(New Char() {" "c, vbTab}, StringSplitOptions.RemoveEmptyEntries) Dim ssn = parts(0) Dim value = If(parts.Length > 1, parts(1), "") ' 存入字典(重复SSN会被后续条目覆盖) If file2Dict.ContainsKey(ssn) Then file2Dict(ssn) = value Else file2Dict.Add(ssn, value) End If Next
2. 处理File1并生成输出
逐行读取File1,结合字典内容判断是否更新,并添加对应备注:
Dim outputLines As New List(Of String) For Each line In File.ReadAllLines("File1.txt") If String.IsNullOrWhiteSpace(line) Then outputLines.Add(line) Continue For End If ' 拆分当前行的SSN和原有值 Dim parts = line.Split(New Char() {" "c, vbTab}, StringSplitOptions.None) Dim ssn = parts(0) Dim originalValue = If(parts.Length > 1, parts(1), "") Dim newLine As String = "" If file2Dict.ContainsKey(ssn) Then Dim updateValue = file2Dict(ssn) If Not String.IsNullOrWhiteSpace(updateValue) Then ' 有有效更新值,替换原有值 newLine = $"{ssn} {updateValue}" Else ' File2中对应值为空,保留原值并加备注 newLine = $"{ssn} {originalValue} - 未更新:因File2中对应值为空" End If Else ' File2中无此SSN条目,保留原值并加备注 newLine = $"{ssn}{If(String.IsNullOrWhiteSpace(originalValue), "", $" {originalValue}")} - 未更新:因File2中无此条目" End If outputLines.Add(newLine) Next ' 将结果写入输出文件 File.WriteAllLines("Output.txt", outputLines)
代码说明
- 拆分File2时用
StringSplitOptions.RemoveEmptyEntries避免多个空格产生空元素;处理File1时用StringSplitOptions.None保留原有格式空白。 - 字典用
StringComparer.OrdinalIgnoreCase可忽略SSN大小写差异(不需要可移除)。 - 兼容空行处理,避免运行报错。
- 输出保持SSN与值之间的四空格对齐,和示例格式一致。
内容的提问来源于stack exchange,提问作者MYTWO
相关产品推荐
相关产品推荐

