2013-08-26 57 views
2

現在嘗試創建一些代碼,從CSV文件中取一個字符串並將其與某些條件進行比較。如果該字符串通過標準比,將它分成4個部分 - 將每個部分放入數組中,然後從TextBox中取一些新值並更改它。如何:* .csv - > line - > someArray - >修改

目前我在點,當需要劃分選定的字符串。準備一些代碼,而是獲得陣列分片只得到System.string[]

代碼

try 
     { 
      FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite); 
      StreamReader sr = new StreamReader(fs); //open file for reading 
      string[] line = sr.ReadToEnd().Split(new string[] { Environment.NewLine }, 
              StringSplitOptions.None); //read file to the end an divide it 
      sr.Close(); //close stream 
      foreach (var l in line) //check each line for criteria 
      { 
       if (l.Contains(dateTimePicker1.Text.ToString() + eventNameUpdateTextBox.Text.ToString())) 
       { 
        try 
        { 
         string[] temp = { "", "", "", "", };// i always have just 4 part of string 
         for (int i = 0; i<3; i++) 
         { 
          updatedTtextBox.Text = temp[i] = l.Split(',').ToString(); //try to divide it 
         } 
        } 
        catch (Exception ex) 
        { 
         MessageBox.Show(ex.Message); 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

但結果 -

debug

在那裏我沒有犯錯?

+0

這就像'「2013年8月26日Y,名稱,10:00,11:00,說明。」' – gbk

回答

5

l.Split(',')的呼叫產生string的數組,即String[]。在這樣的數組上調用ToString()會產生"System.String[]" - 您在輸出中看到的值。

您需要在循環之前進行分割,並在前進索引時從分割中選取一個元素,然後根據需要對每個部分執行任何操作。如果您只想將零件放入temp陣列的各個元素中,也許將項目數量限制爲4,那麼l.Split(',').Take(4).ToArray()就足夠了。

奇怪的是,您在循環中替換updatedTtextBox.Text四次。在你試圖完成什麼隔空猜測,這裏是你可以嘗試做的事情:

​​
+0

試- 你是對的!我替換4次'updatedTtextBox.Text' - 只是試着在任何一行看到 - 臨時添加這一行 - 忘記刪除 – gbk

+0

也不知道'Take()' - 有用的東西 – gbk

相關問題