【发布时间】:2014-06-25 13:18:41
【问题描述】:
我有一个 for 循环偶尔会生成错误“无法索引到空数组”。
这是我用来处理 EDI 文件的一段代码。代码按预期运行,因为错误是在我不感兴趣的文件段上生成的。
这个特定的循环负责提前读取以识别感兴趣的元素。问题是它正在通过锯齿状数组读取。第一个索引表示 EDI 文件的一行,第二个索引表示该行的元素。元素的索引 0 将始终存在 3 有时可能是空索引,因为有时一行中只有 3 个元素。我不能强制使用第 4 (3)个索引,因为这会改变结果文件,在不应该存在的地方添加一个空元素。我似乎找不到进行比较的方法,$FileElements[$i2][3] -eq '20',跳过空索引并返回 false。
For ($i2=$i1+1; !($FileElements[$i2][0] -eq 'HL' -and $FileElements[$i2][3] -eq '20'); $i2++){
有没有更好的处理方法?似乎它应该认识到它是 null 并返回 false 而不是错误。
【问题讨论】:
-
我无法重现您的错误。您确定您的“无法索引到空数组”不是由 $i2 大于文件中的行数引起的吗?
-
你是个天才……或者至少擅长指出我眼皮底下的东西。错误在文件中间,所以我没有考虑文件的结尾。添加一个新的 If 语句和一个 break 已经解决了这个问题。
-
...但是除非您将评论作为答案,否则我无法标记您的答案。
-
完成。我当然不是天才。您使用的是 Powershell ISE 吗?它具有调试功能,它让我找到了问题所在。
-
暂时没有,但我可能会试一试。
标签: arrays powershell for-loop