我須要在.NET中將字符串拆分爲換行符,我知道拆分字符串的惟一方法是使用Split方法。 可是,這不容許我(輕鬆)拆分換行符,那麼最好的方法是什麼? 正則表達式
對於字符串變量s
: 數組
s.Split(new string[]{Environment.NewLine},StringSplitOptions.None)
這使用了您的環境對行結尾的定義。 在Windows上,行結尾是CR-LF(回車,換行)或C#的轉義字符\\r\\n
。 spa
這是一個可靠的解決方案,由於若是你用String.Join
從新組合這些行,這等於你的原始字符串: code
var lines = s.Split(new string[]{Environment.NewLine},StringSplitOptions.None); var reconstituted = String.Join(Environment.NewLine,lines); Debug.Assert(s==reconstituted);
什麼不應作: 字符串
StringSplitOptions.RemoveEmptyEntries
,由於這會破壞標記,例如Markdown,其中空行具備語法目的。 new char[]{Environment.NewLine}
,由於在Windows上,這將爲每一個新行建立一個空字符串元素。 愚蠢的回答:寫一個臨時文件,這樣你就能夠使用古老的File.ReadLines
get
var s = "Hello\r\nWorld"; var path = Path.GetTempFileName(); using (var writer = new StreamWriter(path)) { writer.Write(s); } var lines = File.ReadLines(path);
使用StringReader
怎麼樣? input
using (System.IO.StringReader reader = new System.IO.StringReader(input)) { string line = reader.ReadLine(); }
正則表達式也是一個選項: string
private string[] SplitStringByLineFeed(string inpString) { string[] locResult = Regex.Split(inpString, "[\r\n]+"); return locResult; }
要拆分字符串,您須要使用帶有字符串數組的重載: it
string[] lines = theText.Split( new[] { Environment.NewLine }, StringSplitOptions.None );
編輯:
若是要在文本中處理不一樣類型的換行符,能夠使用匹配多個字符串的功能。 這將在任何類型的換行符上正確分割,並在文本中保留空行和間距: io
string[] lines = theText.Split( new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None );