2013-05-28 59 views
3

我正在從字符文件中提取字符串中的子字符串。但即使子串的開始和結束索引小於字符串的長度,我也會收到index out of range的錯誤。無法從字符串中收集子字符串

for(int i=0;i<y.Length-1;i++) 
{ 
    if (Regex.IsMatch(y[i], @"^[A]")) 
    {  
     NumberOfWords= y[i].Split(' ').Length; 

     if (NumberOfWords > 5) 
     { 
      int le = y[i].Length; 
      int indA = y[i].IndexOf("A"); 
      int indB = y[i].IndexOf("B"); 
      int indC = y[i].IndexOf("C"); 
      int indD = y[i].IndexOf("D"); 

      //if (indD > 1 && indC > 1) 
      // breakop2 = breakop2 + '\n' + '\n' + y[i].Substring(indC, indD); 

      if (indC > 1 && indB > 1) 
       breakop1 = breakop1 + '\n' + y[i].Substring(indB, indC); 

      if (indB > 1) 
       sr = y[i].Substring(indA, indB); 
      else 
       sr = y[i]; 

      breakop = breakop +'\n'+'\n'+ sr; 
      Acount++; 
      //textBox1.Text = s[i]; 
      check1 = check1 + '\n' + '\n' + y[i]; 
      //i++; 
     } 
    } 
} 

回答

11

String.Substring(int, int)沒有開始索引和結束索引(就像它在Java中那樣);它需要一個開始索引和一個長度。因此,也許你想:

sr = y[i].Substring(indA, indB - indA); 

,但你應該檢查indBindA更大。 (如果B基本上在A之前,你需要弄清楚你希望這樣做的行爲。)

你還需要對Substring(indB, indC)應用相同的行爲。