在C#

问题描述:

CRLF解析蓝调我有以下代码:在C#

string myTest = "Line1Test" + Environment.NewLine + 
        "Line2Test" + Environment.NewLine + 
        "Line3Test" + Environment.NewLine; 
    string[] parseStr = myTest.Split(Environment.NewLine.ToCharArray()); 

什么我得到的数据是新的阵列中的每个其他线路。我认为这是因为分割线对于换行符和回车符都是分裂的,但我怎么才能得到每行一个元素?

+0

可能重复[拆分在.NET换行符字符串最简单的方法?(http://*.com/questions/ 1547476 /最简单的方法来拆分一个字符串在网上新行) – 2010-12-14 21:19:32

string[] parseStr = myTest.Split(
    new string[] { Environment.NewLine }, 
    StringSplitOptions.None 
); 
+1

没错。使用以字符串作为分隔符的重载。 – 2010-12-14 21:16:19

您可能希望指定StringSplitOptions.RemoveEmptyEntries以删除空条目。

string[] parseStr = myTest.Split(Environment.NewLine.ToCharArray(), 
           StringSplitOptions.RemoveEmptyEntries); 
+0

除此之外,你在做什么不太合乎逻辑,但它可能是一个简单的例子。 – Kobi 2010-12-14 21:16:10

+1

你的代码在这种情况下工作,但我不会在这里推荐。 OP可能稍后需要以保留空条目的方式修改原始代码。如果出现这种情况,您的代码将不再适用。 – Dinah 2010-12-14 21:22:27

+0

@Dinah - 对。这是使用'RemoveEmptyEntries'的例子。拆分'Environment.NewLine'似乎有点奇怪,但我认为它值得一提。 – Kobi 2010-12-14 21:25:13

另一种方式,虽然可能不是最好的

string myTest = "Line1Test" + Environment.NewLine + 
        "Line2Test" + Environment.NewLine + 
        "Line3Test" + Environment.NewLine;   

string[] parseStr = myTest.Split(Environment.NewLine.ToCharArray()).Where(i => i != string.Empty).ToArray(); 
+0

-1:不能识别原始问题中的问题;也有一个超载来跳过空条目。 – ANeves 2012-08-10 17:09:20