我须要在.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 );