2017-02-15 616 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);

私は、 インデックスを以下のエラーを取得していますし、長さは文字列内の場所を参照する必要があります。

私は、 "名前"の部分文字列で指定された長さが最初の入力と一致しないためにエラーが発生していることを理解できます。 入力の長さによってこの問題を処理する方法はありますか?

+0

「処理する」ことが何であるかは不明です。最初に 'inputData'の長さを確認することはできますが... –

+0

@dasblinkenlightの書式設定の問題です。固定 – dotctor

+0

@ dasblinkenlightはい。それは何か問題が間違っているようです。 – dotctor

答えて

2

1つの方法は、部分文字列を取る前に、文字列の最後に "センチネル"接尾辞を追加することです。これで部分文字列を取り出す前にデータ文字列に追加することができます。限り接尾語が十分な長さを持っているとして、あなたはインデックス/長さ例外得ることは決してないだろう。しかし

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が空の場合は、今、あなたのコードがチェックする必要があります。

関連する問題