2017-04-16 106 views
0

我里面:如何删除文本文件中的行保存一个字符串变量

String yourName = "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,但没有任何内容。

这可能吗?

回答

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); 

我希望有帮助!

+0

竖起大拇指:)谢谢。你能否看看我的另一个问题,5天内没有回答。请致电 –

+0

@PearlPrincess没问题!很高兴我能帮上忙 :) – NullDev

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, ""); 
          } 
         } 
        } 

如果名字是在该行的话,那就可以用“”代替,你已经删除了它。如果名称不在该行中,则替换方法返回整个不变的行。

Show this link for more informations.

0

是否的line值必须正好等于yourName字符串?

如果你的目标是包含YOURNAME

if (line.Contains(yourName)) continue; 

应该足够了线,然后。

但是,如果你正在寻找省略是完全一样yourName线,然后

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

应该够了。

相关问题