2014-11-16 59 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。 –

相關問題