如何将此文本文件的每个部分保存到数组?

时间:2014-11-16 19:36:09

标签: c# arrays

我有一个经常更新的文本文件。

文本文件的格式如下:1. haha: $44.00, 2. jk: $44.00, 3. jk: $44.00, 4. asdfasdf: $22222.00, 5. asdfasdf: $3333.00,

我如何将这些保存到一个数组中,以便以后可以调用它们并将它们一起添加?我基本上需要检查以查看通过的名称是否与先前通过的名称相同。如果是这样,我需要将金额加在一起。

while(!sR.EndOfStream)
{
    string line = sR.ReadLine();
    string split = line.Split('$', ',')[1];
    string nameSplit = line.Split('.', ':')[1];

    List<string> namesArray = new List<string>();
    namesArray.Add(nameSplit);

    MessageBox.Show(nameSplit + " " + split);
}

sR.Close();

编辑:

decimal n = Convert.ToDecimal(split);
                    if (names.ContainsKey(nameSplit))
                    {
                        names[nameSplit] += n;
                        Console.WriteLine("Hoozah!");
                    }
                    else
                    {
                        names.Add(nameSplit, n);
                        Console.WriteLine("Failure");
                    }

1 个答案:

答案 0 :(得分:0)

我会选择创建Dictionary。您可以检查名称是否已存在,如果不存在,则可以添加项目。否则你添加两个值。

Dictionary<string, decimal> names = new Dictionary<string, decimal>();

// inside the loop

decimal n = Convert.ToDecimal(split);
if (names.ContainsKey(nameSplit))
{
    names[nameSplit] += n;
}
else
{
    names.Add(nameSplit, n);
}

如果您打算保留所有值而不是仅保留总和,则可以使用List<decimal>而不是decimal执行相同的操作。

您将(Add)名称添加到词典中。下次,当名称已存在(ContainsKey)时,它会将值+=)添加到n)。