我对断线的正确方法感到困惑。
我在某处看到窗口使用\ r \ n打破行,但这两个代码产生相同的
regex.split(sometext, "\r\n");
regex.split(sometext, "\n");
这是什么方法?这些表达式总是产生相同的效果?
答案 0 :(得分:12)
使用
var myArray = sometext.Split(Environment.NewLine);
Environment.NewLine
将为您的操作系统选择正确的一个。如果数据是在其他系统上创建的,则会失败。可能适用于所有系统但有一些意想不到的后果的东西是
var myArray = sometext.Split(new[] {'\r', '\n'},
StringSplitOptions.RemoveEmptyEntries);
一些可能令人担忧的事情是它将删除所有空行并在回车上拆分。
答案 1 :(得分:3)
如果你想支持每个平台的换行符(例如你需要解析输入文件,在ASP.NET网站上的Linux / Windows / Mac下创建),你不带空字符串,我建议改用这种方法:
myString.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries)
这将返回
["one","two","three"]
表示输入字符串
"one\r\ntwo\n\n\nthree"
<强>更新强> 如果你需要携带空行,你可以使用
myString.Replace("\r\n", "\n").Split("\n")
这适用于“\ r \ n”和“\ n”EOL字符文件。
答案 2 :(得分:2)
您可以使用Environment.NewLine
确保获得正确的内容。
答案 3 :(得分:2)
\ r \ n是carriage return \ n是newline。
Windows默认使用\ r \ n (Environment.NewLine)。
[重写以澄清Environment.NewLine部分]
要获取正确的字符以分割文字,您可以使用Environment.NewLine,它会根据您的平台报告正确的字符。
答案 4 :(得分:0)
出于其他答案中提到的原因,只做EDIT所说的。 两者都很好,不过我亲自使用:
regex.split(sometext, "\n");
编辑:
USE Environment.Newline,如其他答案所示。
答案 5 :(得分:0)
regex.split(sometext, "\r\n");
将是这样做的方式。
原因,两者似乎都给出相同的结果是因为“\ n”在“\ r”之后打破了字符串。所以你有一个带有尾随“\ r”的子串,除非你用十六进制编辑器或其他东西仔细查看,否则这个子串不会很明显。
那说我建议使用Environment.NewLine而不是“\ r \ n”