在txt文件中查找并删除整行

时间:2013-09-07 07:16:34

标签: c# linq

如果我有txt文件,其内容由制表工具分隔,如此

 00013  ITEM1   20.00   2   1   01  0.000   2   0.000   0.00    0.000   0.00    
 00014  ITEM2   20.00   1   1   01  0.000   2   0.000   0.00    0.000   0.00

由于00013代表item.Code且这是唯一值,我想将此item.Code作为参数传递并查找并删除整行。

删除后的操作文件内容将是

00014   ITEM2   20.00   1   1   01  0.000   2   0.000   0.00    0.000   0.00

再一次,如何在txt文件中查找和删除整行?我应该使用linq吗?你会怎么做。

由于

2 个答案:

答案 0 :(得分:4)

试试这个:

void FilterFile(string fileName, string newFileName, string itemCode) 
{
    var mathcedLines = File.ReadLines(fileName).Where(l => !l.StartsWith(itemCode));
    File.WriteAllLines(newFileName, mathcedLines);
}

答案 1 :(得分:2)

是的,您可以使用LINQ。

var result = from line in File.ReadAllLines(path)
             where !line.StartsWith("00013")
             select line; 
File.WriteAllLines(path + "new", result); 

这将涵盖文件操作。至于你的其余问题,我承认我不会100%理解你的要求。

您的文件操作需要考虑的其他选项包括将行加载到List,然后使用FindIndex()然后RemoveAt()。这个方法只删除一个项目,这是好的,给定您对数据的约束,我们要查找的值是唯一的。