我正在编写一个应用程序来读取 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/