【问题标题】:Streamreader Line with commas into a dictionaryStreamreader 用逗号将行插入字典
【发布时间】:2014-08-12 16:06:42
【问题描述】:

我有一个包含行的文本文件,每行用逗号分隔。 我想将数据放在字典上,该字典将根据每行以逗号分隔的文本文件值获取键和值。

txt 行示例:

{
key, value
}

我首先在循环中获取数据。如果它只是一个字符串,那么我会知道该怎么做,但是我首先从 streamReader 读取它的事实给我带来了问题。在普通列表中它也可以工作,但在这种方法中它只是在字典上不起作用。代码如下:

StreamReader sr = new StreamReader("Text.txt");
string line;
int i = 0;

while ((line = sr.ReadLine()) != null)
{
    string[] arr = line.Split(',');
    dict.Add(arr[i], arr[i + 1]);
    i= i+2;                             
}

我被困在 dict.Add 中。我知道它不应该是我写的 arr。 感谢您的帮助!

【问题讨论】:

  • 你是如何定义字典的?你得到的确切错误是什么?并且您确定在拆分后您的数组中至少返回了 2 个元素吗?
  • 您是指i = i + 2 还是i += 2?目前i 始终为0
  • 字典是。与 TXT 文件的模板完全相同。

标签: c# split text-files streamreader string-split


【解决方案1】:

您的问题几乎不可能不清楚。但据我所知,您要么需要另一个 while 循环:

StreamReader sr = new StreamReader("Text.txt");
string line;

while ((line = sr.ReadLine()) != null)
{
    string[] arr = line.Split(',');
    int i = 0;
    while (i < arr.Length)
    {
        dict.Add(arr[i], arr[i + 1]);
        i+=2;  
    }                           
}

或者您需要完全忘记您的 i 变量:

StreamReader sr = new StreamReader("Text.txt");
string line;

while ((line = sr.ReadLine()) != null)
{
    string[] arr = line.Split(',');
    dict.Add(arr[0], arr[1]);                         
}

其中一个应该是正确的。哪一个取决于每行是否有多组值。你的问题的文字让人无法猜测。

而且,string.Split() 通常是一种非常糟糕的处理逗号分隔数据的方法。

【讨论】:

  • 大家好,我还是个编程初学者。感谢您的回复。你会建议使用哪个更好?
  • @SnookerBall 一个专用的 csv 解析器。有很多,甚至还有一个包含在 .Net 框架中 (Microsoft.VisualBasic.TextFieldParser)
  • 你写的第一个代码是我之前尝试做的,但它总是给我这样的消息:“ConsoleApplication25.exe 中发生'System.IndexOutOfRangeException'类型的未处理异常”。文本文件包含很多行,每一行都有单词,每行用一个逗号分隔。
猜你喜欢
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多