我有一个字符串数组列表:
List<string[]> parsedRaw = new List<string[]>();
此列表包含从CSV读入的行,其中parsedRaw [3] [5]将是从CSV的第三行读取的第五个项目。
我知道我可以在列表中找到行数:
parsedRaw.Count
但是,给定一行,如何找到该行中的元素数量?我正在尝试在进入循环之前执行测试以从列表中读取,以避免“索引超出数组的范围”错误,其中循环是:
for (k = 0; k < nBytes; k++)
{
TheseBytes[k] = (byte)parsedRaw[i][StartInt + k];
}
我遇到CSV中一行中的错误,其中元素少于其他元素。在进入这个循环之前,我需要检查parsedRaw [i]是否至少有“StartInt + nBytes”元素。
感谢您的任何建议!
答案 0 :(得分:6)
一行只是一个字符串数组string[]
,因此您可以使用数组的Length
属性找到它的大小。
foreach (string[] row in parsedRaw) {
for (int i = 0 ; i != row.Length ; i++) {
// do something with row[i]
}
}
答案 1 :(得分:3)
给定行中的元素数由
决定parsedRaw[theRowIndex].Length
要修复for循环,您需要将StartInt + k
值限制为小于nBytes
的最小值和行长度
for (k = 0; (k < nBytes) && (k + StartInt < parsedRaw[i].Length); k++)
{
TheseBytes[k] = (byte)parsedRaw[i][StartInt + k];
}
答案 2 :(得分:1)
尝试
List<string[]> parsedRaw = new List<string[]>();
parsedRaw.Add(new string[] {"test1", "test2"});
parsedRaw.Add(new string[] { "test1", "test2", "test3" });
int totalSize = 0;
for (int i = 0; i < parsedRaw.Count(); i++)
{
int rowSize = 0;
for (int k = 0; k < parsedRaw[i].Count(); k++)
{
rowSize += parsedRaw[i][k].Length;
}
totalSize += rowSize;
}