如果包含特定单词,如何从 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();
我正在尝试从 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();