代码之家  ›  专栏  ›  技术社区  ›  Fraction

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

  •  0
  • Fraction  · 技术社区  · 3 年前

    我正在尝试从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();
            }
    
    1 回复  |  直到 3 年前
        1
  •  0
  •   John V    3 年前

    您的代码只写入包含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();