【发布时间】:2018-09-27 15:11:59
【问题描述】:
我这里有sample.txt:
ABCDEABCDEABCDEABCDE
1000 ABCDEABCDEABCDEABCDE
1001 BCDEABCDEABCDEABCDEA
1002 CDEABCDEABCDEABCDEAB
1003 DEABCDEABCDEABCDEABC
1004 EABCDEABCDEABCDEABCD
1005 AABBCCDDEEABCDEABCDE
1006 ABBCCDDEEAABCDEABCDE
1007 ACBEDADCEBBCDEAABABA
1008 AAAAAAAAAAAAAAAAAAAA
1009 BBBBBBBBBBBBBBBBBBBB
1010 EEEEEEEEEEEEEEEEEEEE
1011 CCCCCCCCCCCCCCCCCCCC
1012 DDDDDDDDDDDDDDDDDDDD
0000
第一行是标准答案,下面是学生证(4位)和学生答案(20位)。 并且要求是除非学生 ID = 0000,否则读取到 array.array[0]=student1 id,array[1]=student 1 答案的行。或 studentID[0]=student 1 ID,answer[0]=student 1 答案。 我不熟悉随着 i 增加的 while 条件。
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
int id;
string line;
string[] token;
var lineCount = File.ReadLines("C:\\testresult\\exam.txt").Count();
Console.WriteLine(lineCount);
string[] record = new string[lineCount];
try
{
StreamReader sr = new StreamReader("C:\\testresult\\exam.txt");
line = sr.ReadLine();
line = sr.ReadLine();
token = line.Split();
id = Convert.ToInt32(token[0]);
while (id != 0)
{
{
Console.WriteLine(token[1]);
line = sr.ReadLine();
token = line.Split();
id = Convert.ToInt32(token[0]);
for (int i = 0; i < lineCount; i = i + 2)
{
record[i]=Convert.ToString(id);
record[i + 1] = token[1];
Console.WriteLine(record[i], record[i + 1]);
}
}
}
sr.Close();
Console.ReadLine();
}
catch { }
}
}
}
谁能建议如何逐行读取并将 id 和 token[0] 每次都存储到数组中的每个元素中?
【问题讨论】:
-
我建议使用
List<string>而不是数组,这样您就可以在迭代行时添加值,直到到达 0000 行。 -
我总是尝试使用 File.ReadAllLines 然后逐行处理结果。
-
您能澄清一下“将 id 和 token[0] 存储到每个元素中”的含义吗? id 和 token[0] 一样吗?您要寻找的最终结果是什么?
-
@TaW 请允许我指出 OP 正在(严重)使用的 File.ReadLines 方法的文档,您可以以类似的方式使用该方法;但不会一次将整个文件加载到内存中。
-
MSDN:当您处理非常大的文件时,ReadLines 可以更高效让我们这样做何时以及如果
标签: c# while-loop streamreader