CSV asp.net C# 上的字符串拆分
String Split On CSV asp.net C#
A574A02211 S193FDRA3 20141023S17337 WAN HAI 307
A024A13787 S1023F S1023F WAN HAI 316
A574A02181 S187FDRA3 20141024S17337 WAN HAI 307
我有一个像上面那样的 csv 文件但是,
nextCellPlace = FindNextCell(data[dataCounter], spacePlace);
spacePlace = data[dataCounter].IndexOf(" ", nextCellPlace);
arrivalShip.Add(GetCellValue(data[dataCounter], nextCellPlace, spacePlace));enter
我使用此代码获取第三列数据,但我想滑动前日期数据和字符串数据,就像这样
A574A02211,S193FDRA3,20141023,S17337,WAN HAI 307
如果遇到没有日期的数据我想记下 NULL 然后继续获取第二个数据
像这样
A574A02211,S193FDRA3,20141023,S17337,WAN HAI 307
A024A13787,S1023F,NULLDATE,S1023F,WAN HAI 316
A574A02181,S187FDRA3,20141024,S17337,WAN HAI 307
您可以使用以下方法获取 csv 文件的行。
string[] lines = File.ReadAllLines(pathToCSVFile);
然后,您可以拆分每一行并分析其包含。
for(int i = 0; i < lines.Length; i++)
{
string[] fields = lines[i].Split(" ", StringSplitOptions.RemoveEmptyEntries);
// analyse the fields
}
并不是说字段中的元素个数可以看作是一行是否包含Data的hist
有几种情况会使简单的 .Split(' ')
不起作用:空白值和包含空格的值。如何定义要拆分数据的索引数组,然后 运行 一组子字符串操作以您想要的方式拆分数据?这也将允许您在单词中间拆分,例如 20141023S17337
=> 20141023
、S17337
.
var input = @"A574A02211 S193FDRA3 20141023S17337 WAN HAI 307
A024A13787 S1023F S1023F WAN HAI 316
A574A02181 S187FDRA3 20141024S17337 WAN HAI 307";
var positionsToSplitOn = new int [] { 0, 15, 29, 37, 48 };
var lines = new List<List<string>>();
foreach (var line in input.Split('\n'))
{
var columnValues = new List<string>();
for (int i = 0; i < positionsToSplitOn.Length - 1; ++i)
{
columnValues.Add(line.Substring(positionsToSplitOn[i], positionsToSplitOn[i + 1] - positionsToSplitOn[i]).Trim());
}
columnValues.Add(line.Substring(positionsToSplitOn[positionsToSplitOn.Length - 1]).Trim());
lines.Add(columnValues);
}
A574A02211 S193FDRA3 20141023S17337 WAN HAI 307
A024A13787 S1023F S1023F WAN HAI 316
A574A02181 S187FDRA3 20141024S17337 WAN HAI 307
我有一个像上面那样的 csv 文件但是,
nextCellPlace = FindNextCell(data[dataCounter], spacePlace);
spacePlace = data[dataCounter].IndexOf(" ", nextCellPlace);
arrivalShip.Add(GetCellValue(data[dataCounter], nextCellPlace, spacePlace));enter
我使用此代码获取第三列数据,但我想滑动前日期数据和字符串数据,就像这样
A574A02211,S193FDRA3,20141023,S17337,WAN HAI 307
如果遇到没有日期的数据我想记下 NULL 然后继续获取第二个数据
像这样
A574A02211,S193FDRA3,20141023,S17337,WAN HAI 307
A024A13787,S1023F,NULLDATE,S1023F,WAN HAI 316
A574A02181,S187FDRA3,20141024,S17337,WAN HAI 307
您可以使用以下方法获取 csv 文件的行。
string[] lines = File.ReadAllLines(pathToCSVFile);
然后,您可以拆分每一行并分析其包含。
for(int i = 0; i < lines.Length; i++)
{
string[] fields = lines[i].Split(" ", StringSplitOptions.RemoveEmptyEntries);
// analyse the fields
}
并不是说字段中的元素个数可以看作是一行是否包含Data的hist
有几种情况会使简单的 .Split(' ')
不起作用:空白值和包含空格的值。如何定义要拆分数据的索引数组,然后 运行 一组子字符串操作以您想要的方式拆分数据?这也将允许您在单词中间拆分,例如 20141023S17337
=> 20141023
、S17337
.
var input = @"A574A02211 S193FDRA3 20141023S17337 WAN HAI 307
A024A13787 S1023F S1023F WAN HAI 316
A574A02181 S187FDRA3 20141024S17337 WAN HAI 307";
var positionsToSplitOn = new int [] { 0, 15, 29, 37, 48 };
var lines = new List<List<string>>();
foreach (var line in input.Split('\n'))
{
var columnValues = new List<string>();
for (int i = 0; i < positionsToSplitOn.Length - 1; ++i)
{
columnValues.Add(line.Substring(positionsToSplitOn[i], positionsToSplitOn[i + 1] - positionsToSplitOn[i]).Trim());
}
columnValues.Add(line.Substring(positionsToSplitOn[positionsToSplitOn.Length - 1]).Trim());
lines.Add(columnValues);
}