簡體   English   中英

將csv文件加載到datagridview並使用定界符忽略單詞

[英]load csv file to datagridview and ignore word with delimiter

我正在C#項目中使用Csv文件和datagridview,我嘗試使用2個定界符' '+'加載CSV文件 '這是我的問題! 除最后一個單詞example.csv外,我需要忽略逗號后的所有單詞:

 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();
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中。 如果找不到逗號,那么將添加該值而不會更改。

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

您可以使用Linq解決此問題。 只需添加對System.Linq引用fileDataField如下所示設置fileDataField

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM