gpt4 book ai didi

c# - 使用 Sytem.IO 删除文本文件中的特定行

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:43 26 4
gpt4 key购买 nike

我有一个问题,删除文本列表,而不删除文件中保存的所有文本,如果我搜索 1,则 1 中带有的行将被删除,而另一行不会受到影响是示例输出..

示例输出:

耐克运动鞋80001

勒布朗 790002

这是我的代码:

private void btnDelete_Click(object sender, EventArgs e)
{

try
{
string[] InventoryData = File.ReadAllLines("Inventory.txt");
for (int i = 0; i < InventoryData.Length; i++)
{
if (InventoryData[i] == txtSearch.Text)
{
System.IO.File.Delete("Inventory.txt");
}

}

}
catch
{
MessageBox.Show("File or path not found or invalid.");
}
}

最佳答案

无法编辑磁盘内文本文件的内容。您必须再次覆盖该文件。

您也可以将数组转换为列表并使用 List(T).Remove 从中删除第一个匹配项的方法。

string[] inventoryData = File.ReadAllLines("Inventory.txt");
List<string> inventoryDataList = inventoryData.ToList();

if (inventoryDataList.Remove(txtSearch.Text)) // rewrite file if one item was found and deleted.
{
System.IO.File.WriteAllLines("Inventory.txt", inventoryDataList.ToArray());
}

如果您想在一次搜索中删除所有项目,请使用 List<T>.RemoveAll 方法。

if(inventoryDataList.RemoveAll(str => str == txtSearch.Text) > 0) // this will remove all matches.

编辑:对于较旧的 .Net Framework 版本(3.5 及更低版本),您必须调用 ToArray()因为WriteAllLines只接受数组作为第二个参数。

关于c# - 使用 Sytem.IO 删除文本文件中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32880156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com