2013-07-17 46 views
0

這是我的第一篇文章,我是C#的新手,所以請溫和一點:P。 我正在編寫應用程序,它正在讀取一些txt文件,然後在gridview中顯示它們(我後來用它做了更多的事情,但現在並不重要)。幾乎我所有的文件都有一些確定的字符系統(總是有三列以昏迷方式分隔),在這裏我將它們放入列表中並將它們綁定到gridview中沒有問題。 但是我也有一些文件沒有相同的字符系統,我在處理它們時遇到了問題。你能幫助我以某種方式將它們格式化爲這個原始字符系統(我的意思是這個系統帶有逗號)。貝婁是我的一切加載到列表中,然後進入gridview的函數。我還發布了一個具有良好字符系統的文件示例,並且這個文件不是合成的。格式化txt文件並將其顯示到gridview

29-01-2013 03:49:31.629,某些文本GHS(23).asv 1,多個文本

17-07-2011 12:12:32.643,某些文本也DSAD(1),多個文本

31-01-2013 08:14:08.473,某些文本sdfsdfsd [2],更文本

未格式化文本具有位於beggining一些空格,那麼一些號碼,(點),而另一個空間。在此之後,我想開始閱讀並擺脫以前的一切。此外,在我的正確數據之間沒有逗號,而是空格。這是這樣的。

請大家你能幫我嗎?

  1. 23-05-2009 12:12:45.675某些文本fsdf 1一些文字

  2. 13-02-2003 11:12:45.454某些文本sdfsdfS(1)一些文字

    private void button7_Click(object sender, EventArgs e) 
    { 
        List<MyColumns> list = new List<MyColumns>(); 
    
        OpenFileDialog openFile1 = new OpenFileDialog(); 
        openFile1.Multiselect = true; 
    
        if (openFile1.ShowDialog() != DialogResult.Cancel) 
        { 
         foreach (string filename in openFile1.FileNames) 
         { 
    
          using (StreamReader sr = new StreamReader(filename)) 
          { 
           string line; 
           while ((line = sr.ReadLine()) != null) 
           { 
            string[] _columns = line.Split(",".ToCharArray()); 
            MyColumns mc = new MyColumns(); 
            mc.Time = _columns[0]; 
            mc.System_Description = _columns[1]; 
            mc.User_Description = _columns[2]; 
            list.Add(mc); 
           } 
          } 
         } 
         DataTable ListAsDataTable = BuildDataTable<MyColumns>(list); 
         DataView ListAsDataView = ListAsDataTable.DefaultView; 
         this.dataGridView1.DataSource = view = ListAsDataView; 
         this.dataGridView1.AllowUserToAddRows = false; 
         dataGridView1.ClearSelection(); 
        } 
        textBox1.Text = this.dataGridView1.Rows.Count.ToString(); 
    } 
    

    我也在考慮使用reg表達式,我的文本格式看起來像這樣。字段1>(6)字段2>(23)字段3>(2)字段4>(50+)字段3是用作分隔符的空格,是否可以在使用文本時將其更改爲逗號?

+0

很難提供你想要格式化數據的例子。我會做的第一件事是刪除所有的空白。 「未格式化」文件中的分隔符是什麼。 – Botonomous

+0

它看起來像上面的例子。它從少量空格開始,然後我用''來編號。之後,再增加2個空格,最後是我感興趣的數據。在這種情況下,Delimeter是2個空格。 – user2592968

+0

第一部分很容易劃定界限,從左邊看第二個空間並在那個位置打破,但將第二和第三列分開幾乎是不可能的,除非第二列總是保證以數字結尾(可能後跟括號或方括號)。 –

回答

0

如果是固定寬度的列,那麼一種方法是使用string.Substring,然後使用string.Trim修剪每列的結果。

+0

它看起來是固定寬度的長度。我如何修剪這段文字?你能發展你的想法嗎? – user2592968

0

它是一個CSV文件 - 是所有的領域與「,」。如果是這樣,請幫助自己一個忙,不要試圖自己解析csv - 正確地做這件事可能會非常棘手。 我有一個免費的C#庫,它可以很容易地將csv文件讀入數據表,可以使KBCSV成功實現greadt的成功。

+0

正確的文件是一個csv,但錯誤地格式化文件,不包含逗號,只有空格和我想處理這個錯誤地格式化一個。 – user2592968