2013-02-19 87 views
1

我有這個職位類似的要求... Populate Gridview at runtime using textfile的StreamReader與製表符分隔文本文件

,我想讀的文本文件StreamReader,並使用該文件中的數據DataTable,但是我我不知道如何通過選項卡實現split()

請問有人能指出我正確的方向嗎?

+0

sr.ReadLine()。分割(「\ t」的) ;用於vb不知道這一點。 – Neha 2013-02-19 09:50:39

+0

字段由製表符分隔,行如何分隔?換行符? – 2013-02-19 09:53:19

+0

新行是新行。這是一個相當簡單和標準的edi文件格式,我正在嘗試讀取並顯示給最終用戶。 – Stuart 2013-02-19 10:03:02

回答

13

你可以試試這個:

 DataTable table = new DataTable(); 
     table.Columns.Add("col1"); 
     table.Columns.Add("col2"); 
     table.Columns.Add("col3"); 

     var lines = File.ReadAllLines(@"Data.txt").ToList(); 
     lines.ForEach(line => table.Rows.Add(line.Split((char)9))); 

我推測行是由換行符分隔的(如果是這種情況,可以使用ReadAllLines方法)。數字9是水平製表符的ASCII值,用於分割線條。 ForEach是一種可用於通用列表的方法,它在那裏而不是foreach循環。

+1

謝謝,我今天會試一試,並回顧一下我如何繼續。非常感激! – Stuart 2013-02-19 10:05:24

+1

@Stuart不客氣,我很樂意提供幫助。告訴我,如果它的工作... – 2013-02-19 10:07:01

+0

這工作像一個魅力,再次感謝:@) – Stuart 2013-02-20 09:26:38

0

如果只有製表符,你可以使用斯普利特(「\ t」),但如果製表符空格,你可能想使用regular expressions

2

在C#製表轉義字符是\t,所以讀取文件和分割選項卡上每一行我會使用

var path = "path to file"; 
using (StreamReader sr = new StreamReader(path)) 
{ 
    while (sr.Peek() >= 0) 
    { 
     //Reads the line, splits on tab and adds the components to the table 
     table.Rows.Add(sr.ReadLine().Split('\t')); 
    } 
} 
相關問題