【问题标题】:StreamReader with tab delimited text file带有制表符分隔的文本文件的 StreamReader
【发布时间】:2013-02-19 18:52:10
【问题描述】:

我对这篇文章有类似的要求... Populate Gridview at runtime using textfile

我想读取带有StreamReader 的文本文件并使用文件中的数据填充DataTable,但是我不确定如何使用选项卡实现split()

谁能给我指出正确的方向,好吗?

【问题讨论】:

  • sr.ReadLine().Split("\t");用在 vb 不确定这个。
  • 字段由制表符分隔,行如何分隔?通过换行符?
  • 新行是新行。这是一个相当简单和标准的 edi 文件布局,我正在尝试读取并显示给最终用户。

标签: c# asp.net split streamreader csv


【解决方案1】:

你可以试试这个:

        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 循环。

【讨论】:

  • 谢谢,我今天会试试这个,然后再看看我是怎么过的。非常感谢!
【解决方案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'));
    }
}

【讨论】:

    【解决方案3】:

    如果您只有制表符,您可以使用 Split('\t'),但如果制表符是空格,您可能需要使用 regular expressions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多