2014-11-16 52 views
-1

我有一个经常更新的文本文件。如何将此文本文件的每个部分保存到数组中?

文本文件的格式如下所示: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"); 
        } 
+0

你期望什么样的数组内容?它应该如何划分?任何努力在你身边? –

+0

您的代码中哪部分卡住了? – I4V

+0

基本上,当人们支付数据进来如上。只显示5个,并且每当新的名称和数量经过时移除5。我已经把这个人的名字和数量分开了。所以我有nameVar'haha'和amountVar'44.00'。然后我想把这些添加到一个数组中,所以'haha'是[0],'44.00'是[1]。然后我想要看看是否有另一个名叫'哈哈'的人付了钱。如果是这样,它将添加'44.00'和他们之前存储在数组之前的数量。 –

回答

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)添加到前一个。

+0

它看起来是正确的,你可以向我解释这是做什么,所以我可以肯定,这是我想要的?谢谢! –

+0

@ETSTimeLapse:我编辑了答案以包含一些解释。 –

+0

谢谢,但它只是打印出'else'语句。例如,我以前有过'Phil'这个名字,当它运行并且'Phil'再次通过时,它会打印出其他的,而不是if。 –

相关问题