2017-08-29 58 views
0

我與CSV文件,然後在的datagridview C#項目 工作,我嘗試加載CSV 2分隔符文件「」 +';'有我的問題!我需要忽略逗號之後的所有字,除了最後一個字example.csv:負載CSV文件的DataGridView而忽略單詞與分隔符

my1;;test1;good 
my2;cool;test,abcde;god 
my3;father;zyxw; 
my4;dad;word,fresh,example;banana 

我想在我的DataGridView這樣顯示:

my1;;test1;good 
my2;cool;abcde;god 
my3;father;zyxw; 
my4;dad;example;banana 

正如你可以看到,我的目標是添加來自CSV的所有行,但如果逗號顯示得到最後一個詞。到目前爲止,我使用此代碼:

System.IO.StreamReader fileReader = new System.IO.StreamReader(csvPath, false); 
         string fileRow; 
         string[] fileDataField; 

         //Reading Data 
         while (fileReader.Peek() != -1) 
         { 
          fileRow = fileReader.ReadLine(); 
          fileDataField = fileRow.Split(';'); 
          dataGridView1.Rows.Add(fileDataField); 
         } 
         fileReader.Dispose(); 
         fileReader.Close(); 

回答

1

您可以使用Linq來解決這個問題。只需添加引用System.Linq並設置fileDataField如下:

fileDataField = fileRow.Split(';') 
       .Select(e=> e.LastIndexOf(",") >= 0 && e.IndexOf(",") < e.Length 
       ? e.Substring(e.LastIndexOf(",") + 1) 
       : e).ToArray(); 
+0

完美工作,但我使用數組來解決這個問題我添加.ToArray()感謝您的幫助! – Kate

+0

其實..我意識到,只是更新了我的答案:) –

1
System.IO.StreamReader fileReader = new System.IO.StreamReader(csvPath, false); 
string[] fileDataField; 
string fileRow; 

//Reading Data 
while (fileReader.Peek() != -1) { 
    fileRow = fileReader.ReadLine(); 
    fileDataField = fileRow.Split(';'); 

    //Declare temporary array to temporary store the values 
    string[] tempItems = new string[fileDataField.Length]; 
    //Loop through the array and do comma check, 
    //Cut the string if there's a comma in it 
    //Else just add the normal value 

    for (int i = 0; i < fileDataField.Length; i++) { 
     tempItems[i] = fileDataField[i].Substring(fileDataField[i].LastIndexOf(",") + 1); 
    } 
    dataGridView1.Rows.Add(tempItems); 
} 
fileReader.Dispose(); 
fileReader.Close(); 

這應該工作。你可以簡單地將字符串的部分切掉,幷包括逗號,並將剩下的添加到gridview中。如果沒有找到逗號,則添加該值而不被修改。

編輯: 應該使用數組而不是列表。

+0

謝謝您的回答,但是當我測試此代碼,我不明白,它的加入:System.Collections.Generic.List'1 [系統.String]到我的datagridview,你知道爲什麼嗎? – Kate

+0

我已經更新了答案。問題是添加一個列表到GridView,現在有一個數組它工作 – rqnn

相關問題