第一次發佈,所以原諒我格式化... 我有一個文本文件,我讀過使用File.ReadLines()和順序存儲到名單。 然後我想找到以「Student」開頭的第一個字符串實例。然後,我想將列表中的所有字符串都放到以「Student」開頭的字符串的下一個實例上,然後停在它之前。將這些字符串複製到子列表中,然後沖洗並重復,直到文件結束。文本文件的從字符串列表創建基於字符串的子列表開始於
例子:
東西就行1
東西就行2
學生 ...:張三
標識... :12345
主要...:數學
數目不詳的多線
學生 ...:珍妮·史密斯
...編號:54321
主要...:護理
多行
學生 ...:李四
...編號:11223
專業:解剖學
更行。
我想每個學生的行列表看起來像這樣:
學生1個
學生...:張三
...編號:12345
重大...:數學
未知數的更多行數
學生2
學生...:珍妮·史密斯
...編號:54321
主要...:護理
多行
我已經使用了foreach來行。每一行都被添加到一個新列表中。當我找到一個以「Student」開頭的字符串時,我創建一個新的學生對象並將這些行存儲在子列表中。然後我清除子列表,然後繼續使用foreach,創建新的學生對象。
當前問題 我想念最後一個學生。我知道我可以使用if語句來檢查當前行是否以「Student」開頭,包括檢查當前行是否是列表中的最後一行,但我覺得必須有一個更好/更快的方法來執行此操作。
我必須添加& & lines.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)
}
容易'File.ReadAllText',各執「學生」,並通過'\ r \ n'分割零件 – Slai
可以詳細說明拆分關於「學生」? – user1546185