如何打破行中的字符串

mjs*_*jsr 5 .net regex string lines

我对断线的正确方法感到困惑.

我在某处看到窗口使用\ r \n来断行,但这两个代码产生的相同

regex.split(sometext, "\r\n");
regex.split(sometext, "\n");
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法?,这些表达式总是产生相同的?

Yur*_*ich 12

使用

var myArray = sometext.Split(Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)

Environment.NewLine将为您的操作系统选择正确的一个.如果数据是在其他系统上创建的,则会失败.可能适用于所有系统但有一些意想不到的后果的东西是

var myArray = sometext.Split(new[] {'\r', '\n'}, 
    StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)

一些可能令人担忧的事情是它将删除所有空行并拆分回车.


Klu*_*uyg 3

如果您想支持每个平台的换行符(例如您需要解析在 ASP.NET 网站中的 Linux/Windows/Mac 下创建的输入文件)并且您不携带空字符串,我建议使用这个方法代替:

myString.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries)
Run Code Online (Sandbox Code Playgroud)

这将返回

["one","two","three"]
Run Code Online (Sandbox Code Playgroud)

对于输入字符串

"one\r\ntwo\n\n\nthree"
Run Code Online (Sandbox Code Playgroud)

更新: 如果您需要携带空行,您可以使用

myString.Replace("\r\n", "\n").Split("\n")
Run Code Online (Sandbox Code Playgroud)

这应该适用于“\r\n”和“\n”EOL 字符文件。