我已经输入了csv文件,如下所示:
|Name|Surname|Age|
|ABCD|DCBA|11|
|QAZ|WSX|23|
当我尝试将csv文件上传到我的 datagridview 表时,第一列为空,因为函数正在读取第一个|
拆分字符。
如何跳过每行中的第一个分割字符?
部分代码:
file.ReadLine();
string line = "";
try
{
while ((line = file.ReadLine()) != null)
{
string[] splitArray = line.Split('|');
Listing.Add(new List(splitArray[0], splitArray[1], splitArray[2]));
count++;
}
}
catch
{
MessageBox.Show("Nothing to do here...");
}
file.Close();
答案 0 :(得分:6)
只需使用splitArray[1]
,splitArray[2]
和splitArray[3]
(忽略splitArray[0]
)来忽略第一个索引:
file.ReadLine();
string line = "";
try
{
while ((line = file.ReadLine()) != null)
{
string[] splitArray = line.Split('|');
Listing.Add(new List(splitArray[1], splitArray[2], splitArray[3]));
count++;
}
}
catch
{
MessageBox.Show("Nothing to do here...");
}
file.Close();
正如其他人指出的那样,为什么不使用CsvHelper
?
您可以通过一个非常简单的配置来完成此操作:
public struct Listing
{
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
}
using (var file = File.OpenText("test.txt"))
{
using (var csv = new CsvHelper.CsvReader(file))
{
csv.Configuration.Delimiter = "|";
var records = csv.GetRecords<Listing>().ToList();
foreach (var record in records)
{
Console.WriteLine("Name: {0}, Surname: {1}, Age: {2}", record.Name, record.Surname, record.Age);
}
}
}
在这里您可以看到一些示例输出:
答案 1 :(得分:1)
您可以将可选的第二个StringSplitOptions
参数传递给RemoveEmptyEntries
:
string[] splitArray = line.Split('|', StringSplitOptions.RemoveEmptyEntries);