2010-12-14 43 views
4

CRLF解析藍調我有以下代碼:在C#

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

什麼我得到的數據是新的陣列中的每個其他線路。我認爲這是因爲分割線對於換行符和回車符都是分裂的,但我怎麼才能得到每行一個元素?

+0

可能重複[拆分在.NET換行符字符串最簡單的方法?(http://stackoverflow.com/questions/ 1547476 /最簡單的方法來拆分一個字符串在網上新行) – 2010-12-14 21:19:32

回答

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

沒錯。使用以字符串作爲分隔符的重載。 – 2010-12-14 21:16:19

2

您可能希望指定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

-1

另一種方式,雖然可能不是最好的

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