编程语言
首页 > 编程语言> > c# – 在mscorlib.dll中发生’System.ArgumentOutOfRangeException’

c# – 在mscorlib.dll中发生’System.ArgumentOutOfRangeException’

作者:互联网

先感谢您!我正在编写一个应用程序来读取txt文件并写入Excel.从小做起我只是想读第一行.

Console.WriteLine正确输出字符串(字符之间有空格),但是当我尝试从字符串中提取字符时,我收到此错误:附加信息:索引和长度必须引用字符串中的位置.

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();
    ...
  }
}

我在哪里出错了?

解决方法:

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

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

因此:

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

如果输入只包含10个字符,则很容易失败并抛出此异常.

标签:c,net,argumentexception,mscorlib
来源: https://codeday.me/bug/20190529/1176857.html