我有一种情况,我正在阅读 Material list 文件。 我只关心每行中的前两个字符串,然后我想转到下一行。当然,我是故意跳过前 3 行的,只是标题废话。
foreach (string line in lines.Skip(3))
{
string[] entries = line.Split(null);
creoBOM newCreoBOM = new creoBOM();
newCreoBOM.identCode = entries[0];
newCreoBOM.itemQty = entries[1];
creoBOMA.Add(newCreoBOM);
messageWindow.Text += entries[0] + " " + entries[1];
messageWindow.AppendText(Environment.NewLine);
}
messageWindow.Text += "creoBOMFile Loaded";
messageWindow.AppendText(Environment.NewLine);
}
如果文件每一行只有两个变量,那很好。 如果文件有很多超过 [0] 和 [1] 的条目,它会给我一个越界错误。
处理这种情况的最佳方法是什么?我目前正在使用 null char 进行拆分,因为 ITEM1 和 QTY1 始终由空格分隔,保证。它是由另一个软件生成的系统。我确信有一种简单的方法可以在读取 entries[1] 后换行。 entries[2+..n] 不应该存在,因为我不能保证每一行真正存在多少个条目。
读入文件时好的示例文件:
ITEM1 QTY1
ITEM2 QTY2
ITEM3 QTY3
读取文件时出错的示例文件:
ITEM1 QTY1 DESCRIPTION1 RANDOMJIBBERISH1
ITEM2 QTY2 RANDOMJIbberish2 DESCRIPTION2 SOMENEWVAR
ITEM3 QTY3
最佳答案
您可以使用 continue 来避免崩溃:
string[] entries = line.Split(null);
if (entries.Length<2)
continue;
关于C# 阻止条目所以你不会得到 "Index was outside the bounds of the array",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52067850/