我有一個字節數組(例如byte [] data),其中包含具有自定義行分隔符的文本,例如:「\ r \ n」(CRLF 「\ x0D \ x0A」),「\ r」,「\ n」,「\ x0D \ x0A \ x0D」或甚至「@」。C#逐行讀取文本,其中行分隔符是自定義的
目前我打算採用如下方案:
- 規範化換行符CRLF(這裏有一個例子如何規範CRLF What is a quick way to force CRLF in C#/.NET?)
使用StringReader通過閱讀文本行線
using (String Reader sr = new StringReader(data.ToString())) { string line; while ((line = sr.ReadLine()) != null) { // Process the line } }
我使用C#,.NET 3.5。 有沒有更好的解決方案?
謝謝。
你應該將你的行結束標準化爲'\ n',它只需要2個替換而不是3個。注意你的鏈接中的答案首先標準化爲'\ n',只有在這之後''n' r \ N'。 – 2010-01-02 17:36:47
是的,事實證明,我需要將行尾標記爲以下任一項:「\ r」,「\ n」,「\ r \ n」 http://msdn.microsoft.com/en-us /library/system.io.stringreader.readline.aspx 一行被定義爲一個字符序列,後跟一個換行符(「\ n」),一個回車符(「\ r」)或一個回車立即返回然後換行(「\ r \ n」)。結果字符串不包含終止回車和/或換行符。如果已到達基礎字符串的末尾,則返回值爲空引用(在Visual Basic中爲Nothing)。 – 2010-01-02 17:46:43
爲了獲得最快的性能,您可以手動分割它... – 2010-01-02 18:39:04