得到"发现"来自多个.txt文件

时间:2017-02-07 16:54:54

标签: vb.net

我目前正在运行查找并一次替换数百个.txt文件。我正在寻找一种方法来计算我的价值的发现次数。 这是我目前正在运行的代码,希望能够添加或修改此代码。

Dim flatfiles As String() = IO.Directory.GetFiles("C:\DATA\TEST\", "*.txt").Where(Function(x) File.ReadAllText(x).Contains("Bob")).ToArray
    For Each f As String In flatfiles
        Dim contents As String = File.ReadAllText(f)
        File.WriteAllText(f, contents.Replace("Bob", "Bill"))
    Next

1 个答案:

答案 0 :(得分:-1)

执行此操作的一种(低效)方法是在For Each循环(Dim itemsFound as Integer = 0)之外包含一个计数器,然后将其增加每个文件中find的计数,使用类似的东西:

itemsFound = itemsFound + (Regex.Split(contents, find).Length - 1)

只要找到Regex.Split

find就会将字符串拆分,这意味着您要查找的计数比列表中的项目数少一个。

我也想说,你在代码中调用了File.ReadAllText两次,所以你可以通过删除Where代码来改进它,然后检查你的For each } loop(看到你现在正在计算文件中的实例数量,它很容易检查0次)。或者,您可以替换.Where代码以将文件内容存储在数组中而不是文件名中(尽管如果文件很大,这可能会很危险);或者如果你想要一些模糊的代码,你甚至可以在Linq中完成所有工作......