格式化文本文件并将其显示到gridview

时间:2013-07-17 20:22:14

标签: c# .net visual-studio-2010

这是我的第一篇文章,我是C#的新手,所以请保持温柔:P。 我正在编写正在读取一些txt文件的应用程序,然后在gridview中显示它们(我后来用它做了一些更多的事情,但现在它并不重要)。几乎所有的文件都有一些已建立的字符系统(总有三列用逗号分隔),这里我没有问题,阅读它们放入列表然后绑定到gridview。 但我也有一些文件没有相同的字符系统,我有处理它们的问题。你能帮助我以某种方式将它们格式化为这个原始的字符系统(我的意思是这个用逗号表示)。 Bellow是我将所有内容加载到列表然后进入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],更多文字

未格式化的文本在开始时有一些空格,然后是一些数字,(点)和另一个空格。在此之后,我想开始阅读并摆脱以前的一切。此外,在我的正确数据之间,它没有逗号而是空格。它是这样的。

拜托,伙计们,你可以帮助我吗?

  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 expresions,我的文本格式看起来像这样。 Field1&gt;(6)Field2&gt;(23)Field3&gt;(2)Field4&gt;(50+)field 3是用作分隔符的空格,是否可以将它们改为逗号,同时使用文本??

    < / LI>

2 个答案:

答案 0 :(得分:0)

如果它是固定宽度的列,那么一种方法是使用string.Substring,然后使用string.Trim修剪每列的结果。

答案 1 :(得分:0)

是否为CSV文件 - 所有字段都以“,”分隔。如果是这样,你自己一个忙,不要试图自己解析csv - 做正确的事可能会非常棘手。 我用KBCSV获得了一个免费的C#库,它可以轻松地将csv文件读入数据表。