【问题标题】:displaying string of array in datagridview c# windows application在datagridview c# windows应用程序中显示数组字符串
【发布时间】:2013-08-01 17:41:32
【问题描述】:

大家好,提前感谢我有以下代码,用于在 c# Windows 应用程序中显示从 .csv 文件到 datagridview 的记录(具有三列 Number、Date、Message)。

 var lines = File.ReadAllLines("E:\\messages.csv").Select(a => a.Split(',')).ToList();
 foreach (string[] s in lines)
 {
    dataGridView1.Rows.Add(s[2], s[5], s[7]);
 }

对于前 7 次出现的 ',' 工作正常,但我在 .csv 文件中有其他行超过 7 ',' 所以我希望在 7 之后出现的所有 ',' 应该与 7 结合我在 datagridview 中的第三列名称为 Message

.csv 文件中的一行示例

sms,deliver,"+919999999999","","","2013.08.01 09:40","","以下孟买公寓出租:SHIKHA, Near SHATRANJ, Off Carter Road, Khar Garden面临1500 平方英尺 2 小时通知检查。--Rohit J."

【问题讨论】:

    标签: c# list csv


    【解决方案1】:

    您可以使用此overload of Split,它允许您选择要返回的元素数量(在本例中为7)。

    var lines = File.ReadAllLines("E:\\messages.csv")
                                 .Select(a => a.Split(new[] {','}, 7)).ToList();
    
    foreach (string[] s in lines)
    {
       dataGridView1.Rows.Add(s[2], s[5], s[6]);
    }
    

    【讨论】:

    • @ShaikhMohammadSufiyan - 将 s[7] 更改为 s[6]。或者,如果这导致一个结果下降,请将 7 更改为 8(以便返回 8 个结果并保留您的 s[7] 调用)。
    • 谢谢先生...我得到了我正在寻找的结果..但是先生还有一件事..我还想从结果中删除双引号..我该怎么做先生。 ..
    • @keyboardP 你让我在几秒钟内到达那里,投票给你
    • @ShaikhMohammadSufiyan - 你的意思是所有的双引号,还是空的?
    • 您可以使用Trim 删除引号
    【解决方案2】:

    试试

    var lines = File.ReadAllLines("E:\\messages.csv").Select(a => a.Split(',',7)).ToList();
    

    【讨论】:

      【解决方案3】:

      通过简单地以逗号分隔来读取/解析 CSV 是一个坏主意。考虑下表:

      第 1 栏 第 2 栏 第 3 栏 你好你好吗我很好 你好,世界,你还好吗是的,我是

      CSV 看起来像:

      第 1 栏,第 2 栏,第 3 栏 你好,你好吗,我很好 “你好,世界”,你好吗,是的,我是

      用逗号分隔将删除第二行。嵌套引号和换行符使这项工作更加困难。

      相反,不要费心重新发明轮子,而是使用解析器。查看this questionthis question 的答案以获得一些建议。

      【讨论】:

        猜你喜欢
        • 2012-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多