【问题标题】:C# parsing out data line by line by character location from txt fileC#从txt文件中逐行逐行解析数据
【发布时间】:2014-09-19 17:52:49
【问题描述】:

只是想看看处理以下情况的最佳方法是什么。

我正在尝试做一个小工作,读取一个包含一千左右行的 txt 文件;

每行大约 40 个字符长(主要是数字,一些字母标识符)。

我用过

            DataTable txtCache = new DataTable();
        txtCache.Columns.Add(new DataColumn("Column1"));


        string[] lines = System.IO.File.ReadAllLines(FILEcheck.Properties.Settings.Default.filePath);

       foreach (string line in lines)
       {
           txtCache.Rows.Add(line);              
       }

但是,我真正想做的事情有点令人困惑且难以解释,所以我会尽力而为。行示例如下: 5498494000584454684840}eD44448774V6468465 Z

那个长字符串的开头是“84”,稍晚一点是“58”。我需要对这两个数字进行比较。它们可以是任何东西,但文件中只能接受少数几种组合。它们将始终位于同一位置和相同数量的字符(因此它始终是 2 个数字并且始终位于 4-5 位置)。所以我想要3列。我想要 1 列中的完整字符串,然后是它们自己的列中的 2 个单独的较小数字。然后我可以稍后比较它们,如果有问题,我可以返回导致问题的完整字符串。

这可能吗?我只是不确定如何根据字符位置解析出子字符串,然后将其加载到数据表中。

任何建议将不胜感激。谢谢,

【问题讨论】:

  • 尝试使用 string.Substring(x,y) :试试这个链接了解详情dotnetperls.com/substring
  • 你在这篇文章中多次使用“子字符串”这个词,答案就是Substring

标签: c# datatable substring dataadapter


【解决方案1】:

您可以为要存储的每个项目(整个字符串、第一个数字、第二个数字)创建列,然后为输入文件中的每一行添加一行。您可以只使用 substring 方法来解析出两位数字并存储它们。要进行分析,您可以从字符串中解析出数字,或者您需要做的任何其他事情。

lines[0].Substring(3,2) 在上面的例子中会给你“84”。如果你想要 int,你可以使用 Int32.Parse(lines[0].Substring(3,2))

子字符串引用:http://msdn.microsoft.com/en-us/library/aka44szs%28v=vs.110%29.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    相关资源
    最近更新 更多