c# - mscorlib.dll 中出现“System.ArgumentOutOfRangeException”

标签 c# .net argumentexception mscorlib

我正在编写一个应用程序来读取 txt 文件的第一行并写入 Excel。

输入行是这样的,一共94个字符,最后8位可以是空格或者0(x其实是空格):101x071000301x6759601771308202341F094101ACHxxxxxxxxxxxxxxxxxxxxFISxACHxMILWAUKEE‌ xxxxxxxx

打印时,它正确地将 x 显示为空白。不过不确定最后 8 个空格。

Console.WriteLine 正确输出字符串(字符之间有空格),但是当我尝试从字符串中提取字符时出现此错误:

'System.ArgumentOutOfRangeException' occurred in mscorlib.dll
Additional information: Index and length must refer to a location within the string.

while ((input = stream.ReadLine()) != null)
{
  //ACH HEADER LINE
  if (iCurRecLine == 0 && input.IndexOf(HeaderBeginKeyWord) >= 0)     
  {
    Console.WriteLine(input);

    RepDate = input.Substring(23, 6).Trim();
    RecordTypeCode = input.Substring(0, 1).Trim();
    PriorityCode = input.Substring(1, 2).Trim();
    ImmDestination = input.Substring(3, 10).Trim();
    ImmOrigin = input.Substring(13, 10).Trim();
    FileCreatedDate = input.Substring(23, 6).Trim();
    FileCreatedTime = input.Substring(29, 4).Trim();
    FileIDModifier = input.Substring(33, 1).Trim();
    RecordSize = input.Substring(34, 3).Trim();
    BlockingFactor = input.Substring(37, 2).Trim();
    FormatCode = input.Substring(39, 1).Trim();
    Destination = input.Substring(40, 23).Trim();
    Origin = input.Substring(63, 23).Trim();
    ReferenceCode = input.Substring(86, 8).Trim();
    ...
  }
}

我哪里做错了?

最佳答案

您正在阅读的文件内容似乎没有经过验证。

.SubString() 如果 "startIndex plus length indicates a position not within this instance." 抛出 ArgumentOutOfRangeException

因此:

 RepDate = input.Substring(23, 6).Trim();

如果 input 仅包含 10 个字符,则很容易失败并抛出此异常。

关于c# - mscorlib.dll 中出现“System.ArgumentOutOfRangeException”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668096/

相关文章:

c# - 限制 .net 插件可以访问的内容

c# - 使用自定义模型 Binder 时出现 NullReferenceException

c# - NodeMouseClick 事件无法正常工作?

c# - 添加应用程序参数以在 Docker 中运行 .NET 控制台应用程序

c# - 如何捕捉程序关闭以释放资源?

c# - Marshal.PtrToStructure 抛出 System.ArgumentException 错误

c# - 从查询字符串中获取 U+fffd/65533 而不是特殊字符

c# - 为什么是 ArgumentNullException?为什么不是 System.NullReferenceException?

c# - 访问数据库连接字符串错误

c# - 从 C# 中的 Excel 工作表中读取数据?