索引和长度必须引用字符串中的位置。?

Index and length must refer to a location within the string.?

我的输入字符串是

  1. inputData = "99998UNKNOWN"
  2. inputData = "01000AMEBACIDE/TRICHOM/ANTIBAC 1"
  3. inputData = "34343AMEBACIDE/TRICHOM/ANTIBACSADWA1"

ID = inputData.Substring(0,5); Name = inputData.Substring(5,30); Level = inputData.Substring(35,1);

我收到以下错误, 索引和长度必须引用字符串中的某个位置。

我能理解,这个错误是由于 "Name" 的子字符串中指定的长度与第一个输入不匹配。 有什么方法可以处理任何输入长度的问题吗?

一种方法是在获取子字符串之前在字符串末尾添加一个"sentinel" 后缀。现在您可以在从中获取子字符串之前将其添加到数据字符串中。只要后缀有足够的长度,你就永远不会得到 index/length 异常:

var padded = inputData.PadRight(32);
ID = padded.Substring(0, 5).Trim();
Name = padded.Substring(5, 30).Trim();
Level = padded.Substring(30, 1).Trim();

但是,现在您的代码应该检查 IDNameLevel 是否为空。