2010-10-21 67 views
7

可能重複:
Easiest way to split a string on newlines in .net?閱讀每行一個串線在C#

我想讀出和解釋每行一個串線。我看了一下StringReader類,但是我需要知道什麼時候我在最後一行。這裏有一些我試圖完成的僞代碼:

while (!stringReaderObject.atEndOfStream()) { 
    interpret(stringReaderObject.readLine()); 
} 

有人知道如何做到這一點嗎?

謝謝!

伊凡

+0

不是重複的......兩個問題都有不同的解決方案。 – cybermonkey 2016-12-13 16:07:26

回答

38

如果您正在從文件讀取它,它是比較容易做只是做:

foreach(var myString in File.ReadAllLines(pathToFile)) 
    interpret(myString); 

如果您收到來自其他地方的字符串(網絡服務類等)是比較簡單剛剛拆分字符串:

foreach(var myString in entireString.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) 
    interpret(myString); 
+1

我認爲這是對我的問題最簡單的解決方案。謝謝! – friedkiwi 2010-10-21 17:03:19

+0

如果他的字符串有新行並且他在Unix上,該怎麼辦? – 2010-10-21 17:05:45

+1

@SB然後我確信他會添加「單聲道」和「互操作」標籤;-) – 2010-10-21 17:08:00

3

StreamReader類有一個EndOfStream屬性。你有沒有使用過?

3

我不確定你在哪裏閱讀。如果是從控制檯,您可以檢查輸入的字符串像年底「跳槽」來表示輸入結束

String input; 
while((input = reader.readLine()) != "quit"){ 
    // do something 
} 
3

像這樣:

string line; 
while (null != (line = reader.ReadLine()) { 
    Process(line); 
} 
+1

不是這樣的:'while(true){string line = reader.ReadLine(); if(line == null){break; }過程(行); }'。這一行代碼太多了。 – jason 2010-10-21 17:04:39

+0

@Jason - 不是。這也是我見過的每一個例子中使用的規範模式。 – Kev 2010-10-21 17:10:32

+0

@Kev:這就像世代相傳的壞習慣。 – jason 2010-10-21 17:34:26

4

檢查空當你做一個的readLine - 請參閱docs