我正在寻找vb代码来执行以下操作:
文件A (位于驱动器L:\ source中的源)包含以下内容:
AAA
BBB
CCC
DDD
1A1B
文件B (位于本地驱动器D:\ user中的用户)包含以下内容:
aaa
bbb
ccc
111
222
333
AAA
BBB
CCC
DDD
1A1B
111
222
333
注意:
源文件A:
AAA
与文件B aaa
中的同一行。
BBB
与文件B bbb
中的同一行。
CCC
与文件B ccc
中的同一行。
DDD
在文件B中不存在。
1A1B
在文件B中不存在。
用户文件B :
aaa
与文件A AAA
相同,使用小写字母将其与源文件区分开。
bbb
与文件A BBB
相同,使用小写字母将其与源文件区分开。
ccc
与文件A CCC
相同,使用小写字母将其与源文件区分开。
111
是用户行
222
是用户行
333
是用户行
答案 0 :(得分:0)
由于您尚未发布任何代码,因此我不会从头开始编写整个内容,但是如果您在实际代码中遇到麻烦,我很乐于分享和解释我的方法和帮助。
第1步
我将创建4个总计列表(集合):
.ToLower
值,示例:Dim CollectionA As List(Of String)
第2步
读取文件A的每一行,但是在处理每一行时,您将用它做三件事:
.ToLower
版本复制到CollectionALowers 第3步
将文件B的每一行读入CollectionB。
第4步
使用for-each循环通过检查集合的.IndexOf方法来检查集合B中的每个值,以查看集合A中的每个值,除非进行检查,否则您将获取B项目的.ToLower
在A的集合的ToLower版本中检查其索引值。如果索引大于-1,则表示它已经存在,因此您无需将其添加到输出集合中;但是如果索引为-1,则它不在A的小写集合中,因此您可以添加原始(非- B字符串的ToLower版本)到输出集合。
For Each item as String in CollectionB
if CollectionALowers.IndexOf(item.tolower) = -1 Then
CollectionOutput.Add(item)
end if
Next
第5步
将CollectionOutput的内容写回到文件A,覆盖原始文件内容。
想法
以上所述,我不确定您是否确实需要单独的CollectionOutput。相反,您可以将项目添加到CollectionA。仅从资源的角度来看,这将使用更少的内存,并且效率更高。但是,我发现我自己的程序会随着时间的流逝而变得越来越复杂,并且随着程序的发展,将事情放在明显不同的存储桶中通常很方便。
尝试一下,一旦您有一些代码要共享,请在需要帮助时将其发布。