【问题标题】:Is there a way to delete or replace the next line in a csv file when using a loop?使用循环时,有没有办法删除或替换 csv 文件中的下一行?
【发布时间】:2020-05-27 01:28:44
【问题描述】:

我想知道是否可以在 csv 文件中每次包含单词“hello”时删除或替换一行。因此,当我将文件打印回控制台时,它会显示除“hello”行之外的所有内容。到目前为止我所做的如下,我遍历文件中的每一行,检查该行是否等于“hello”,但不知道下一步该做什么。

非常感谢任何帮助。

Var allLines = File.ReadLines(@"..\..\..\File.csv");

Foreach (var line in allLines)

{

if (line.Split(',')[0].Equals(string Hello))

{

// need to delete line where the line in csv file equals hello

}

}

【问题讨论】:

  • 如果您不想打印与该条件匹配的行,请否定该条件并将您的 Console WriteLine 移到其中。
  • 您可以将数据写入新的 csv 文件,省略不需要的行。

标签: c# csv delete-row readlines


【解决方案1】:

您可以使用 linq 只遍历您感兴趣的行

Foreach (var line in allLines.Where(x => !x.Split(',').First().Equals("hello")  ))
{
  // do what u need with anything not hello
}

这会遍历所有“不”等于“hello”的行。如果要删除可能包含 hello 的行,可以用 Contains 替换 Equals

如果您打算将其从文件中删除,则可以使用相同类型的 linq 语句,

File.WriteAllLines(path, allLines.Where(x => !x.StartsWith("hello,"))  );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 2019-09-05
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    相关资源
    最近更新 更多