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

时间:2017-02-15 15:09:53

标签: substring c#-2.0 longest-substring

我的输入字符串是

  1. inputData = "99998UNKNOWN"
  2. inputData = "01000AMEBACIDE/TRICHOM/ANTIBAC 1"
  3. inputData =" 34343AMEBACIDE / TRICHOM / ANTIBACSADWA1"
  4. ID = inputData.Substring(0,5); Name = inputData.Substring(5,30); Level = inputData.Substring(35,1);

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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