2014-04-15 39 views
-2

我有數據看起來具有以下格式。我想爲每個「ran」創建一個新的2列數組,並在後面加上相應的運行名稱。將文本數據的部分保存到數組中

Ran: Efg (space between : and E) 
1  50  (tab delimited) 
2  52  (tab delimited) 
3  54  (tab delimited) 
Ran: pg2 (space between : and E) 
1  40  (tab delimited) 
2  60  (tab delimited) 
3  80  (tab delimited) 
Ran: 2  (space between : and E) 
1  14  (tab delimited) 
2  15  (tab delimited) 
3  16  (tab delimited) 

到目前爲止,我有一個問題,使用下面的,因爲它給了我一個無限循環,但我不知道怎麼回事,從以前的

public void openDVHToolStripMenuItem_Click (object sender, EventArgs e){....} 

public static string resulttext 
    { 
     get { return resulttext; } 
    } 

訪問字符串resulttext其次,到目前爲止,我已經得到了以下幾個數組來分隔待數組的名稱。

private void button1_Click(object sender, EventArgs e) 
    { 
     Dictionary<string, List<string>> Darray = new Dictionary<string, List<string>>(); 

     using (StringReader reader = new StringReader(resulttext)) 
     { 
      string line; 
      string ran = "Ran:"; 
      string region = ""; 

      while (null != (line = reader.ReadLine())) 
      { 
       if (line.Contains(ran)) 
       { 
        string[] splitHeader = line.Split(":".ToCharArray()); 
        region = splitHeader[1].Trim(); 
       } 
       else 
       { 
        if (!line.Contains(ran)) 
        { 
         List<string> Dlist = new List<string>(); 
         Darray.Add(region, Dlist); 
        } 

       } 

      } 
      foreach (var item in Darray) 
      { 
       richTextBox2.AppendText(item + Environment.NewLine); 
      } 

     } 


    } 

我必須能夠稍後調用每個數組,並對這兩個數字列的值做一些基本的數學運算。

有什麼建議嗎?

+0

什麼給你一個無限循環? –

+0

爲什麼不把整個文件讀入列表或Tuple,然後一旦你設置了正確的代碼行,在指定的delim上分割(),然後決定如何循環收集和處理。我會建議查找如何將文件加載到字典或HashSet,HashList,HashTable等列表等..有太多的選項,然後處理從那裏的數據.. – MethodMan

+0

@ selman22,使用get {return resulttext; }使視覺工作室給我一個消息,說明它是一個無限循環。 – crazian

回答

1

此:

public static string resulttext 
{ 
    get { return resulttext; } 
} 

給你一個「無限循環」,因爲它是遞歸的; return resulttext來電public static string resulttext。這樣做:

public static string ResultText { get; private set; } 
相關問題