如何打破行中的字符串

时间:2011-04-07 15:03:31

标签: .net regex string lines

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

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

regex.split(sometext, "\r\n");
regex.split(sometext, "\n");

这是什么方法?这些表达式总是产生相同的效果?

6 个答案:

答案 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”