2010-10-21 65 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