2014-08-29 4 views
0

다음 코드에 대한 오류가 발생합니다. 여기서 내 pagedata.length는 495이고 변수 k에서 이들 중 57 개를 사용하고 있습니다. 원인인덱스가 배열 문자열의 경계를 벗어났습니다

for(int k = 0; k < pagedata.Length;k++) 
     { 
      string[] textdata = pagedata.Split(new char[0]); 
      string stringforemail = textdata[k]; 
      if (stringforemail.Contains("@") && stringforemail.Contains(".")) 
      { 
       TableRow tr = new TableRow(); 
       //tr.BorderStyle = BorderStyle.Solid; 
       TableCell tc = new TableCell(); 
       tc.BorderStyle = BorderStyle.Solid; 
       tc.Text = stringforemail; 
       tr.Cells.Add(tc); 
       Table1.Rows.Add(tr); 
      } 
     } 

이 내 코드에서 뭔가 잘못이지만, 내가 실수를 파악하지 못할 .. 오류를 이해하는 저를 도와주세요.

+0

어떤 길이가 텍스트 데이터입니까 []? – jbutler483

+0

분명히 당신의주기는'pagedata.Length'까지 실행되고 있지만'pagedata.Split (new char [0]).보다 깁니다. Length' - textdata [k]가 범위 밖에 있습니다. –

+0

우리는 정말로 당신을 도울 방법이 없습니다. Pagedata.Length> Split.NewChar.Length, 그래서 당신이 무엇을 찾고 일관성이 없습니다. 정규식이 도움이 될 수 있습니다. – DidIReallyWriteThat

답변

2

빈 문자 배열에 텍스트를 분할하려고합니다. 즉, 하나의 항목을 가진 배열 인 pagedata을 얻을 수 있습니다.

textdata[k] 길이가 pagedata이고 배열의 길이가 1 이상이므로 사용자의 textdata[k]이 실패합니다.

나는 당신이 그것으로 뭘 하려는지 모르겠지만, 코드는 다음과 같이 보일 것이다 :

string[] textdata = pagedata.Split("your split string"); 

foreach (string stringforemail in textdata) 
{ 
    if (stringforemail.Contains("@") && stringforemail.Contains(".")) 
    { 
     TableRow tr = new TableRow(); 
     //tr.BorderStyle = BorderStyle.Solid; 
     TableCell tc = new TableCell(); 
     tc.BorderStyle = BorderStyle.Solid; 
     tc.Text = stringforemail; 
     tr.Cells.Add(tc); 
     Table1.Rows.Add(tr); 
    } 
} 

어디 당신이 분리 문자로 사용하는 텍스트 your split string를 교체합니다.

+0

hes가 pagedata를 '0'으로 분할하는 것처럼 보입니다. 따라서 textdata [k], k는 0이어야합니다. 배열의 첫 번째 엘레멘트는 항상 있어야합니다. – DidIReallyWriteThat

+0

@CalvinSmith : 가능할 수도 있지만 게시물에서 불분명 함. –

+0

사실, textdata [k]는 pagedata에서 0 문자 이상을 넘기 만하면 항상 0 위치에 결과를 갖습니다. – DidIReallyWriteThat

0

시도 (for 루프의 끝에서) 추가 감사 : 방법 번이 완료

if(k==textdata.Length) 
{ 
break; 
} 

는, 루프가 중단됩니다.

관련 문제