2011-02-12 67 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()等。它比字符讀取更有效率。

但有一點:二進制格式不好,人類可讀。在編輯器中編輯文件將很困難。但以編程方式 - 沒有任何問題。

相關問題