C# 用c删除文本文件中的特定行#

C# 用c删除文本文件中的特定行#,c#,windows-runtime,text-files,C#,Windows Runtime,Text Files,我正在为windows 8桌面构建一个应用程序,我正在阅读一个文本文件,我想更改一行,但不确定如何更改,我拥有的是一个文本文件,其中显示 username|false username|false username|false 当事情发生时,我想去掉中间线,这就是我到目前为止所做的 StorageFolder folder = ApplicationData.Current.LocalFolder; StorageFile storageFile = await folder.GetFileA

我正在为windows 8桌面构建一个应用程序,我正在阅读一个文本文件,我想更改一行,但不确定如何更改,我拥有的是一个文本文件,其中显示

username|false
username|false
username|false
当事情发生时,我想去掉中间线,这就是我到目前为止所做的

StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile storageFile = await folder.GetFileAsync("students.txt");
var text = await Windows.Storage.FileIO.ReadLinesAsync(storageFile);
var list_false = "";

foreach (var line in text)
{
    string name = "" + line.Split('|')[0];
    string testTaken = "" + line.Split('|')[1];
    if (your_name.Text == name)
    {
        if (testTaken == "false") {
            pageTitle.Text = name;
            enter_name_grid.Opacity = 0;
            questions_grid.Opacity = 1;
            var md = new MessageDialog("Enjoy the test");
            await md.ShowAsync();
        }
        else
        {
            the_name.Text = "You have already taken the test";
            var md1 = new MessageDialog("You have already taken the test");
            await md1.ShowAsync();
        }
        return;
    }
    else
    {
        list_false = "You're not on the list";
    }
}
if (list_false == "You're not on the list") {
    var md2 = new MessageDialog("You're not on the list");
    await md2.ShowAsync();
}

请帮忙,它可以完美地读入名字,允许他们参加考试,我只需要它来删除正确的行。提前谢谢

读取文件时,可以将内容存储在列表中。当你的“某事发生”时,你可以在适当的索引中删除内容并保存(覆盖)列表到文件。

要考虑的重要事情是你正在修改一个文件。因此,无论您选择更改什么,都需要将其写回文件

在您选择将整个文件读入内存的情况下,这实际上对您有利,因为您可以删除任何不需要的行并写回文件。但是,在使用
foreach
循环遍历列表时,无法删除项目

从正在循环的数组中删除项目的最佳做法是使用
for
循环,然后反向循环。如果我们也使用
列表
,也可以更轻松地删除项目,如下所示:

var list = new List<string>(text);
for(int i = text.Length - 1; i >=0; i--)
{
    string line = text[i];
    //rest of code
}
text = list.ToArray();
最后,在循环之后,您需要将整个内容写回文件:

await Windows.Storage.FileIO.WriteLinesAsync(storageFile, text);

你所说的“发生事情时删除中间行”是什么意思?@Tarec好吧,当他们输入自己的名字时,如果有匹配项,那么我希望删除他们名字对应的行
await Windows.Storage.FileIO.WriteLinesAsync(storageFile, text);