2017-11-21 9 views
1

こんにちは、私はこのエラーを取得しておく問題のビットにAMにインデックス配列エラーが

var cour = File.ReadAllLines(@"CourseFile.txt"); 
var courFind = cour.Where(g => g.Contains("Course")); 
string[] splited2; 
foreach (var item in courFind) 
{ 
    splited2 = item.Split(new string[] { "Course:" }, StringSplitOptions.None); 
    cbListCourses.Items.Add(splited2[1]);//here is where the issues starts 
} 
+1

どちらか:あなたは葉<2つの項目を分割ラインを持っている、またはあなたがあなたのファイルに空白行を持っています。このタスクに 'StartsWith(...)'と 'Substring(...) 'を使わないのはなぜですか?とにかく、無作為なインターネットの見知らぬ人に質問を投稿することなくこれらの問題を診断する絶対100%の最良の方法は、デバッガを使用して、自分で値を検査することです。 – john

+1

[エラー:インデックスが配列の境界外にありました。](https://stackoverflow.com/questions/21700879/error-index-was-outside-the-bounds-of-the-array) – john

+1

最初の項目で配列インデックスが0から始まることを認識していますか? – oerkelens

答えて

0

を少なくとも配列の長さを確認する必要があります:

var cour = File.ReadAllLines(@"CourseFile.txt"); 
var courFind = cour.Where(g => g.Contains("Course")); 
string[] splited2; 
foreach (var item in courFind) 
{ 
    splited2 = item.Split(new string[] { "Course:" }, StringSplitOptions.None); 
    if(splited2.Length >= 2) 
    cbListCourses.Items.Add(splited2[1]);//here is where the issues starts 
} 
0
foreach (var item in courFind) 
{ 
    splited2 = item.Split(new string[] { "Course:" }, StringSplitOptions.None); 
    cbListCourses.Items.Add(splited2[0]); // Array Index starts with 0 
} 
0

あなたがチェックする必要があり、アレイのLength(ファイルがある場合、たとえば、空行?何)

var data = File 
    .ReadLines(@"CourseFile.txt") 
    .Select(line => new string[] { "Course:" }, StringSplitOptions.None) 
    .Where(items => item.Length >= 2) // Check array's Length 
    .Select(items => items[1])  // Now it's safe to address the 2nd item 
    .ToArray();      // ComboBox.Items.AddRange wants array 

cbListCourses.Items.AddRange(data); 
0

ファイルは任意のコロン(:)行にが含まれていない可能性があります。

あなたは

var courFind = cour.Where(g => g.Contains("Course:")); 

の代わりに、以前の場合と同様に確認する必要があります。

テストケースは続く:

  1. 空のコンテンツ内容と
  2. とファイル - >コース:コンテンツと
  3. - >コース(あなたが直面しているとエラーと同じ)

コード:

var cbListStudents = new List<String>(); 
var cbListCourses = new List<String>(); 

var d = File.ReadAllLines (@"res/TestFile.txt"); 
var t = d.Where (g => g.Contains ("Student Name")); 
string[] splited; 
foreach (var item in t) { 
    splited = item.Split (new string[] { "Student Name:" }, StringSplitOptions.None); 
    cbListStudents.Add (splited[1]); 
} 

var cour = File.ReadAllLines (@"res/TestFile2.txt"); 
var courFind = cour.Where (g => g.Contains ("Course")); 
string[] splited2; 
foreach (var item in courFind) { 
    splited2 = item.Split (new string[] { "Course:" }, StringSplitOptions.None); 
    cbListCourses.Add (splited2[1]); //here is where the issues starts 
}   
関連する問題