0

这是我的第一篇文章,我是 C# 新手,所以请温柔:P。我正在编写正在读取一些 txt 文件然后在 gridview 中显示它们的应用程序(我稍后会用它做更多的事情,但现在并不重要)。几乎我所有的文件都有一些已建立的字符系统(总是有三列用逗号分隔),在这里我将它们放入列表然后绑定到 gridview 没有问题。但是我也有一些文件没有相同的字符系统,我在处理它们时遇到了问题。你能帮我以某种方式将它们格式化为这个原始的字符系统(我的意思是这个带逗号的系统)。Bellow 是将所有内容加载到列表然后加载到 gridview 的函数。我还发布了具有良好字符系统的文件示例,而这个没有格式化。

29-01-2013 03:49:31.629,一些文本 ghs(23).asv 1,更多文本

2011 年 7 月 17 日 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 表达式,我的文本格式看起来像这样。Field1>(6)Field2>(23)Field3>(2)Field4>(50+) field 3 是用作分隔符的空格,是否可以在处理文本时将它们更改为逗号?

4

2 回答 2

0

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

于 2013-07-17T20:36:05.350 回答
0

它是 CSV 文件吗?所有字段都以“,”分隔。如果是这样,请帮自己一个忙,不要尝试自己解析 csv - 正确执行可能会非常棘手。我使用 KBCSV 获得了巨大的成功,这是一个免费的 C# 库,可以轻松地将 csv 文件读入数据表。

于 2013-07-18T07:05:48.343 回答