C# 文本文件的最后三行
我需要一点帮助!我不知道如何将文件的最后三行存储到单独的字符串中。如果可能的话,数组也可以工作C# 文本文件的最后三行,c#,C#,我需要一点帮助!我不知道如何将文件的最后三行存储到单独的字符串中。如果可能的话,数组也可以工作 string[] lines = File.ReadAllLines(myfile); 如果有人可以使用数组来实现这一点,我将如何仅获取最后三行。请注意,我不知道文件的长度 谢谢效率不高,但它可以工作:行。反转().Take(3)。反转() 备选方案: line1 = lines[lines.length-3] // Third to last line2 = lines[lines.length-
string[] lines = File.ReadAllLines(myfile);
如果有人可以使用数组来实现这一点,我将如何仅获取最后三行。请注意,我不知道文件的长度
谢谢效率不高,但它可以工作:
行。反转().Take(3)。反转()
备选方案:
line1 = lines[lines.length-3] // Third to last
line2 = lines[lines.length-2]
line3 = lines[lines.length-1] // Last line
这似乎有点太简单了 使现代化 如果阵列的长度小于3,则为。这应该基于计数打印最后三行,或者如果i==-1,则打印少于三行
string[] lines = File.ReadAllLines(myFile)
// Get the last three lines
int count = 0;
for (int i = lines.length - 1; i >= 0; i++)
{
Console.WriteLine(lines[i]);
count++;
if (count == 3)
{
break;
}
}
如果您不需要使用
ReadAllLines
在一个大数组中加载文件中的所有行,而只需一次读取一行,只读取最后(3)行,则可以执行以下操作:
var threeLines = new string[3];
var nLines = 0;
foreach (var line in File.ReadLines(myFile))
{
var ndx = nLines % 3;
threeLines[ndx] = line;
nLines++;
}
此外,如果输入中的行数少于3行,则不会崩溃
for (var i = 0; i < Math.Min(nLines, 3); i++)
Console.WriteLine(threeLines[i]);
OP希望这些行进入单独的字符串。您正在将它们放入一个数组中。last3line[0]、last3line[1]和last3line[2]是非常独立的字符串。它们也碰巧在一个阵列中。但这一事实并不能阻止它们分开。这里唯一可能的问题是,如果
行。长度是<3
,我很难说这是边缘情况-OP还表示他不知道有多少行。我想你可以用试一试/接球来概括一下?
for (var i = 0; i < Math.Min(nLines, 3); i++)
Console.WriteLine(threeLines[i]);
for (var i = Math.Min(nLines, 3); i > 0; i--)
Console.WriteLine(threeLines[i-1]);