如何从保存在字符串变量中的文本文件中删除一行

时间:2017-04-16 00:09:17

标签: c# file

我有:

String yourName = "bob";

现在我想从文本文件中删除bob。我该怎么做?

using (StreamReader reader = new StreamReader("C:\\input"))
                        {
                            using (StreamWriter writer = new StreamWriter("C:\\output"))
                            {
                                while ((line = reader.ReadLine()) != null)
                                {
                                    if (String.Compare(line, yourName) == 0)
                                        continue;

                                    writer.WriteLine(line);
                                }
                            }
                        }

我看过这个网站以及YouTube,但没有任何内容。

这可能吗?

3 个答案:

答案 0 :(得分:1)

您应该使用替换方法:

using (StreamReader reader = new StreamReader("C:\\input"))
                    {
                        using (StreamWriter writer = new StreamWriter("C:\\output"))
                        {
                            while ((line = reader.ReadLine()) != null)
                            {
                                // if (String.Compare(line, yourName) == 0)
                                //    continue;

                                writer.WriteLine(line.Replace(yourName, "");
                            }
                        }
                    }

如果名称在该行中,则它将替换为“”并且您已将其删除。如果名称不在行中,则replace方法返回整个未更改的行。

Show this link for more informations.

答案 1 :(得分:0)

这是可能的。您需要遍历这些行并检查当前行是否包含string
这是一个这样做的例子:

string yourName = "bob";
string oldLine;
string newLine = null;
StreamReader sr = File.OpenText("C:\\input");
while ((oldLine = sr.ReadLine()) != null){
    if (!oldLine.Contains(yourName)) newLine += oldLine + Environment.NewLine;  
}
sr.Close();
File.WriteAllText("C:\\output", newLine);

注意:这将删除所有包含bob 此外,如果您要写入同一文件,只需使用输入文件而不是

中的output
File.WriteAllText("C:\\output", newLine);

我希望有所帮助!

答案 2 :(得分:0)

line的值是否必须与yourName字符串完全相等?

如果您的目标是包含 yourName 字符串的行,那么

if (line.Contains(yourName)) continue;

应该足够了。

但是,如果您想要省略与yourName完全相同的行,那么

if (line?.ToLowerCase() == yourName?.ToLowerCase()) continue;

应该足够了。