[英]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.