2017-02-15 38 views
0

我的输入字符串索引和长度必须指向字符串中的一个位置。

  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”的子字符串中指定的长度与第一个输入不匹配所致。 有没有办法处理这个问题的任何输入长度?

+0

目前尚不清楚您要“处理”什么。你可以先检查'inputData'的长度,但是... –

+0

@dasblinkenlight格式化问题。固定 – dotctor

+0

@dasblinkenlight是的。这个问题似乎有问题。 – dotctor

回答

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

不过,现在你的代码应该检查是否IDName,或Level是空的。

相关问题