我目前正在运行查找并一次替换数百个.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
答案 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中完成所有工作......