2014-09-16 2 views
0

Visual Studio에서이 기능을 내부에 IndexOutOfRangeException을 던져?신비 IndexOutOfRangeException

+0

예외가 똑바로 앞으로이다. 사용할 수 없거나 존재하지 않거나 배열의 길이가 더 긴 색인에 액세스하고 있습니다. –

+0

손을 던지기보다 오류가있는 곳을 찾아보십시오. 코드를 여러 줄로 나누십시오. 모든 것을 수행하는 단일 줄 대신 각각 한 가지를 수행합니다. 그러면 문제가 어디에 놓여 있는지에 따라 문제가 어디 있는지 쉽게 알 수 있습니다. – jmcilhinney

답변

0

그건 이상한 방법이지만, 내 자신의 샘플 입력을 테스트하고 예상 한 상황에서 정상적으로 작동합니다.

startString을 찾을 수없는 경우 첫 번째 string.Split의 결과 배열에 단일 요소 (원래 입력 문자열)가 포함되어 있기 때문에 문제가 발생합니다. endChar의 두 번째 요소를 분할하려고하면 찾을 두 번째 요소가 없으며 이는 예외입니다.

나는이 일을 더 우아한 방법이 확신 해요,하지만이 중 하나 startString 또는 endChar 찾을 수없는 경우 null를 반환 일을 할 것입니다 :

public static string ExtractString(string content, string startString, char endChar) 
{ 
    int i, j; 

    i = content.IndexOf(startString); 

    if (i == -1) 
     return null; 
    else 
     i += startString.Length; // Start at char after startString 

    j = content.IndexOf(endChar); 

    if (j == -1) 
     return null; 

    return content.Substring(i, j - i); 
} 
+0

감사합니다. 힌트가 없으면 언제든지 텍스트 파일을 다시 확인하지 않았을 것입니다. 콘텐츠가 어떻게 든 삭제되었습니다. 분명히 오류가 사라지고 파일을 복구했습니다. 그리고 다시 정렬 된 기능에 대해 감사드립니다. – betaFlux