如何从文本文件中获取数据并将其拆分为数组?

时间:2012-11-17 04:19:21

标签: c# arrays text struct split

我有一个项目需要将数据从文本文件拆分为数组或“结构数组”,正如我的教授所说,我对如何去做这件事感到很困惑。

基本上我在文本文件中安排了这样的数据(不一定是这样......每行可以是一件事):

PR214;MR43T;RBL8;14K22
PR223;R43;RJ6;14K24
PR224;R43N;RN4;14K30
PR246;R46N;RN8;14K32
PR247;R46TS;RBL17Y;14K33
PR248;R46TX;RBL12-6;14K35
PR324;S46;J11;14K38
PR326;SR46E;XEJ8;14K40
PR444;47L;H12;14K44

第一列(PR ...)中的数字代表CCC编号。第2列,第3列和第4列代表三个不同公司的部件号(第2列是一家公司,第3列是另一家公司,等等)。用户将通过选择一个单选按钮,然后输入部件(即公司3和“RJ6”)告诉我公司和公司下面的部件号,然后我应该给客户CCC编号( “PR223”)。

我不是要求你们为我做功课,但我很难抓住阵列。你能指出我如何做到这一点吗?

3 个答案:

答案 0 :(得分:1)

其他答案都是正确的。您从文本文件中读取每一行,并将值插入由数据定义的结构中。对于每个新行,您需要使用结构的一个实例,因此您可以创建一组只包含一组结构的结构。

如果你正在努力理解数组,你真的需要努力。想想像盒子一样的数组。让我们从3行开始。每个都是相同的大小,只能容纳它们内部的东西。您可以将项目类型(数据)分配给框,但所有框都只能包含该类型的项目。这些框的编号从0到2.在某些语言中,您可以命名框(关联数组),但不能在C#AFAIK中命名。这样就可以得到一维数组。

对于二维阵列想象棋盘。你知道如何记录国际象棋比赛吗?国际象棋符号使用A到H表示水平位置,1到8表示垂直位置。所以白皇后从位置D1开始。现在,如果我正在编写一个国际象棋游戏,我会像棋盘一样使用8x8阵列。当然,我阵列上的编号在顶部为0-7,在侧面为0-7。那时白色女王在我的阵列中的位置将是[3] [0]。因此,将数据放置在二维阵列中就像将棋子放在棋盘上一样。游戏战舰是二维阵列的另一个例子。

向数组添加维度就像在图表中添加新坐标一样。您从 X 开始,然后添加 Y ,然后添加 Z 。等等。

答案 1 :(得分:0)

您可以使用StreamReader的ReadLine方法一次读取一行文件。然后,您可以使用String.Split(char[])方法获取每行中值的字符串数组。如果您已经知道如何制作结构,那么您应该设置它。

答案 2 :(得分:0)

如果查看每行数据,“列”之间会有一个共同的分隔符,因此您希望将每行split分成四个独立的实体。当你工作时 line和get这四个离散元素应该可以将每个元素分配给结构的适当部分。你当然每行都有一个'结构',所以最后是一个结构数组。