2016-10-26 28 views
0

會盡量保持它簡短。所以我有這個長的代碼,不斷得到System.IndexOutOfRangeException錯誤,雖然我會從頭開始,它發生在一個單一的循環,所以我在這裏問。代碼本身非常簡單,問題肯定在這裏。System.IndexOutOfRangeException當遇到一個字符串,並且增加變量

using (var streamReader = new StreamReader(fileStream, Encoding.UTF8)) 
     { 
      string line; 
      while ((line = streamReader.ReadLine()) != null) 
      { 
       int i = 0; 
       for(;;) 
       { 
        if(line[i] == 's' && line[i+1] == 'e' && line[i+2] == ':') break; 
        i++; 

       } 
       i = i + 2; 
       line.Substring(i, line.Length - i); 
       Console.WriteLine(line); 
      } 

解釋if語句 - 我在尋找這個詞的時候「演習」結束,這樣我就可以有一個新的字符串下文。

任何想法,爲什麼我得到這個錯誤?謝謝。

編輯:下面是示例文本文件,我會讀:

練習:臥推。從事肌肉羣胸部,肩膀

練習:肩部按壓。從事肌肉羣肩膀,二頭肌

練習:電纜排。從事肌肉羣回來,二頭肌

+0

你有樣本輸入嗎? –

+0

是的,你在這裏: 練習:臥推。從事肌肉羣胸部,肩部\ n 練習:肩部按壓。從事肌肉羣肩膀,二頭肌\ n 練習:電纜排。參與肌肉羣回來,二頭肌\ n 不得不寫「\ n」,因爲評論沒有新行。 這個動作後我的目標是保存名字(就像有一個字符串「臥推」,然後將肌肉羣保存爲單獨的字符串,並將它們用作枚舉,但首先我需要解決這個問題。 – Gytis39

+0

You想line.length - 1,而不是line.length - 我。但我不認爲這會導致你的問題。你確定它在這些行上的錯誤嗎?但是,我只是用一個空白字符串替換'練習:'並打印還有,這是什麼語言?你想要Console.WriteLine(line.Substring(i,line.Length - 1))嗎? –

回答

2

沒有必要使用循環爲你想要的。你可以使用字符串函數來提取你的數據,你可以使用類似的東西:

String exercise = "Exercise:hello"; 
var hello = exercise.Substring (exercise.IndexOf (":")); 
相關問題