You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSV/文本文件按位置配对重组时报数组索引越界错误如何解决

数组越界报错解决方法

报错Index was outside the bounds of the array的核心原因是你操作数组时使用的索引超过了数组的实际长度,针对你的场景,绝大多数情况是拆分字符串得到的两个数组长度不匹配导致的。

触发问题的常见原因

  • 你提供的两行内容末尾都带了;,按;拆分字符串时会在最后多生成一个空字符串元素,比如第一行拆分后得到的数组是["11","12","13","14","15",""],长度为6,如果你按5个元素的逻辑循环取值,就会触发越界。
  • 读取文件时读到了多余的空白行(比如文件末尾的空行),拆分后得到空数组,直接取值就会报错。
  • 两行内容的实际元素数量不一致,取值时按更长的数组长度循环。

修复步骤

  1. 读取文件时先过滤空行,只保留有实际内容的行
  2. 拆分字符串时添加空值过滤逻辑,排除末尾分号产生的无效空元素
  3. 配对前先校验两个数组的长度是否一致,避免长度不匹配导致越界

参考实现代码

Python 示例

# 读取文件并过滤空行
with open("你的文件路径.txt", "r", encoding="utf-8") as f:
    lines = [line.strip() for line in f if line.strip()]

# 拆分时过滤空元素
list1 = [item for item in lines[0].split(";") if item]
list2 = [item for item in lines[1].split(";") if item]

# 先校验长度再配对输出
if len(list1) != len(list2):
    print(f"元素数量不匹配:第一行{len(list1)}个,第二行{len(list2)}个")
else:
    res = [f"{a}={b}" for a, b in zip(list1, list2)]
    print("、".join(res))

C# 示例

// 读取并过滤空行
var lines = File.ReadAllLines("你的文件路径.txt").Where(line => !string.IsNullOrWhiteSpace(line)).ToList();
// 拆分时直接移除空条目
var list1 = lines[0].Split(';', StringSplitOptions.RemoveEmptyEntries);
var list2 = lines[1].Split(';', StringSplitOptions.RemoveEmptyEntries);

if (list1.Length != list2.Length)
{
    Console.WriteLine($"元素数量不匹配:第一行{list1.Length}个,第二行{list2.Length}个");
    return;
}
var res = string.Join("、", list1.Zip(list2, (a, b) => $"{a}={b}"));
Console.WriteLine(res);

内容的提问来源于stack exchange,提问作者HelpMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:06:03