2011-02-12 202 views
1

我有一个具有以下格式的文本文件:如何读取文本文件转换成一个列表,C#

ABC123 1000 2000

第一个整数值是重量和下一行有三个值,一个产品代码,重量和成本,并且该行可以重复任意次数。每个值之间都有一个空格。

我已经能够读取文本文件,将第一行的第一个值存储到变量中,然后将后续行存入数组,然后放入列表中,使用第一个readline.split('') 。

对我来说,这似乎是一种低效率的方式,我一直在努力寻找一种方法,我可以从第二行读取产品代码,重量和成本被列入列表而不需要使用数组。我的列表控件包含一个对象,我只存储重量和成本,而不是产品代码。

有谁知道如何读取文本文件,从文件中取一些值直接进入列表控件?

感谢

+0

如果第二行中的段具有一致的长度使用索引而不是拆分命令 – Luis 2011-02-12 19:51:05

回答

1

你所做的是正确的。没有一种通用的方法来实现它,因为你所做的就是你对算法进行了描述,它必须以某种方式进行编码或参数化。

0

由于文本文件并不像结构为CSV文件,这种手工解析的可能是你最好的选择。

C#没有像Java这样的Scanner类,所以你不想在BCL中存在什么,尽管你可以使用write your own

0

其他答案是正确的 - 这里没有一个通用的解决方案。

如果你有一个相对较小的文件,你可以使用File.ReadAllLines(),它至少会摆脱很多的cruft代码,因为它会立即将它转换为一个字符串数组给你。

0

如果您不想从文件中解析字符串并为保留拆分字符串保留额外内存,则可以使用二进制格式将信息存储在文件中。然后,您可以使用BinaryReader类,如ReadInt32(),ReadDouble()等。它比字符读取更有效率。

但有一点:二进制格式不好,人类可读。在编辑器中编辑文件将很困难。但以编程方式 - 没有任何问题。

相关问题