我也想和你一样 这条 然而在C#中。
换句话说,我有3个文本文件。
content.txt
remove.txt
result.txt
我想删除所有的行 content.txt
中的任何一行。remove.txt
并将结果输出到 result.txt
.
你可以试试 线路:写给 result.txt
全行 content.txt
其中线不在 remove.txt
:
using System.IO;
using System.Linq;
...
HashSet<string> toRemove = new HashSet<string>(File.ReadLines(@"remove.txt"));
File.WriteAllLines(@"result.txt", File
.ReadLines(@"content.txt")
.Where(line => !toRemove.Contains(line)));
首先阅读文件
var contentLines = File.ReadAllLines("content.txt");
var removeLines = File.ReadAllLines("remove.txt");
然后,我们可以利用Linq查询创建ResultLines,在Linq查询中,我们遍历contentLines,并检查内容行是否在remove lines集合中不存在。
var resultLines = contentLines.Where(contentLine => removeLines.All(r => r != contentLine)).ToList();
最后把resultLines写到一个新的文件里,叫result.txt。
File.WriteAllLines("result.txt", resultLines);
完整样本
using System.IO;
using System.Linq;
namespace Sandbox
{
class Program
{
static void Main(string[] args)
{
// ReadFiles
var contentLines = File.ReadAllLines("content.txt");
var removeLines = File.ReadAllLines("remove.txt");
// Iterate through content lines and check that it doesn't exists in removeLines by using LINQ
var resultLines = contentLines.Where(contentLine => removeLines.All(r => r != contentLine)).ToList();
// Write result.txt
File.WriteAllLines("result.txt", resultLines);
}
}
}
这里是一个开始
string[] allLinesRemove = File.ReadAllLines(filePath_of_Remove.txt);
string[] allLinesContent = File.ReadAllLines(filePath_of_Content.txt);
现在使用LINQ或For Loops来获取你需要的东西到第3个数组。我把它留给了你
然后输出结果