将csv文件加载到datagridview并忽略带分隔符的单词



我正在C#项目中使用Csv文件和datagridview我尝试加载一个带有2个分隔符''+'<strong]的CSV文件>'这是我的问题!我需要忽略逗号后的所有单词,除了最后一个单词example.csv:

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

我想在我的数据网格视图中显示如下:

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();

您可以使用Linq来解决此问题。只需添加对System.Linq的引用,并按如下方式设置fileDataField

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

这应该行得通。您可以简单地切掉字符串中逗号之前的部分(包括逗号(,然后将其余部分添加到网格视图中。如果找不到逗号,则添加该值而不更改。

编辑:应该使用数组而不是列表。

相关内容

最新更新