我正在尝试读取文件并生成一个没有包含“HEADER”或“TRAILER”的行的新文件。以下是我的代码。当我在文本[i] .Remove(i)处放置断点时,它似乎执行该代码,但文本变量不会删除该行。任何帮助将不胜感激。从文件C#File.ReadAllLines中删除头和尾部
var text = File.ReadAllLines(fileName);
int i = 0;
foreach (string line in text)
{
if (line.Substring(0, 20).Contains("HEADER") || line.Substring(0, 20).Contains("TRAILER"))
{
text[i].Remove(i);
}
else
{
i++;
}
}
string newFN = fileName + "b";
File.WriteAllLines(newFN, text);
不能修改枚举同时列举它。 – Amy
另外'text [i] .Remove(i)'最有可能不会做你认为它做的事。 –
也就是你调用'Remove'的方式,你会打电话给它(字符)一行本身。所以你要告诉该行删除在'text [i]'(一行)内的索引'i'处开始的字符。但是因为字符串是不可变的,所以你要返回一个新的字符串,并且不做任何事情。除了其他评论和答案中关于从可枚举中移除的内容之外,您还混合了两种不同类型的“Remove”。请参阅https://msdn.microsoft.com/en-us/library/9ad138yc(v=vs.110).aspx此外,您应该查看'string.StartsWith',因为您的行可能不是20个字符长,而'Substring'可能会失败。 – pinkfloydx33