2017-02-15 71 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是空的。