我有:
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,但没有任何内容。
这可能吗?
答案 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方法返回整个未更改的行。
答案 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;
应该足够了。