私は書式設定で私を許しています... 私はFile.ReadLines()を使って読み込んだテキストファイルを持っています。リスト。 "Student"で始まる文字列の最初のインスタンスを探したいと思っています。次に、リスト内のすべての文字列を、 "Student"で始まりその直前で停止する文字列の次のインスタンスに取得したいとします。それらの文字列をサブリストにコピーしてから、すすぎ、ファイルの終わりに達するまで繰り返します。テキストファイルの文字列に基づいて文字列のリストからサブリストを作成
例:
ライン上で何かの行に1つの
何か2
学生 ...:ジョー・スミス
Idを... :12345
主な...:複数行
学生の数学
未知数...:ジェーン・スミス
イド...:54321
主な...:看護
複数行
学生 ...:ジョン・ドウ
イド...:11223
主要:解剖
一層のライン。
私はこのように見えるように学生一人当たりの行のリストが欲しい:
学生1人の
学生...:ジョー・スミス
イド...:12345
メジャー...数学
不明な行数
学生2
学生...:ジェーン・スミス
イド...:54321
主な...:看護
より多くの行が
私はラインを反復するためのforeachを使用しました。各行は新しいリストに追加されます。 "Student"で始まる文字列を見つけたら、新しい生徒オブジェクトを作成し、その行をサブリストに格納します。次に、私はサブリストをクリアしてから、foreachを続けて、新しい生徒オブジェクトを作成します。
最新号 私は最後の生徒が恋しいです。現在の行がリストの最後の行であるかどうかを調べるために現在の行が "Student"で始まるかどうかを調べるif文を持つことができることは分かっていますが、これを行うためのより速く/速い方法が必要です。
& &行を追加する必要があります.Count> 3は、スキップしたい "Student"の最初のインスタンスの前にいくつかの行があるためです。
Linqの例をお待ちしております。
List<Student> students = new List<Student>();
List<string> lines = File.ReadLines(args[0]).ToList();
List<string> student_lines = new List<string>();
foreach(string line in lines)
{
if(line.StartsWith("Student...", StringComparison.OrdinalIgnoreCase) && lines.Count > 3)
{
students.Add(new Student(student_lines));
student_lines.Clear();
}
lines.Add(line)
}
ような何か:私はこれを取得あなたのサンプルデータから
を"Student"を開き、\ r \ nで分割します。 – Slai
分割で詳しく説明できますか「学生」について? – user1546185