如果包含特定单词,如何从 csv 文件中删除该行

How to remove a line from csv file if it contains a specific word

我正在尝试从 csv 文件中删除包含单词的一行。但是,它会删除 CSV 中的所有内容。您可以在下面找到我的代码。我或多或少确定我的 for 循环不正确,但我无法做出任何其他逻辑。

[HttpPost("Delete{studentIndex}")]
        public IActionResult DeleteStudent([FromRoute] string studentIndex)
        {
            string[] values = System.IO.File.ReadAllLines("data.csv");
            StreamWriter Writer = new StreamWriter("data.csv", false);
            
            for (int i = 0; i < values.Length; i++)
            {
                if (values[i].Contains(studentIndex))
                {
                    Writer.WriteLine(values[i].Replace(values[i], ""));
                }
            }

            Writer.Close();

            return Ok();
        }

您的代码只写入包含 studentIndex 的行,并在这些行上用空白替换它们。这就是您的输出为空的原因。

如果该行包含学生索引,则不要写。不需要任何字符串替换

if (!values[i].Contains(studentIndex))
{
    Writer.WriteLine(values[i]);
}

如果您正在尝试编写地道的 c#,可以简化代码:

var values = System.IO.File.ReadAllLines("data.csv");
using (var writer = new StreamWriter("data.csv", false) 
{
    values.Where(v => !v.Contains(student index))
          .Select(writer.WriteLine);
}        
return Ok();