我对什么是打破行的正确方法感到困惑。如何打破行中的字符串
我读的地方,窗户使用\ r \ n以中断线路,但是这两个代码产生相同的
regex.split(sometext, "\r\n");
regex.split(sometext, "\n");
它是什么的正确方法?这些表达式总是产生相同的?
我对什么是打破行的正确方法感到困惑。如何打破行中的字符串
我读的地方,窗户使用\ r \ n以中断线路,但是这两个代码产生相同的
regex.split(sometext, "\r\n");
regex.split(sometext, "\n");
它是什么的正确方法?这些表达式总是产生相同的?
如果你想支持新行字符为各种平台(例如,你需要分析输入文件,在Linux下创建/ Windows/Mac在您的ASP。NET的网站),你不要携带空字符串,我建议用这个方法来代替:
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字符文件。
好主意我打算使用它。如果我的字符串有一个异端的结尾,我可以添加一个替换更多删除(非常不可能发生)隐形CR .... myString.Replace(“\ r \ n”,“\ n”)。replace(“\ R”, “”)。分裂( “\ n” 个) – mjsr 2011-04-07 21:12:29
使用
var myArray = sometext.Split(Environment.NewLine);
Environment.NewLine
会选择正确的操作系统。如果数据是在不同的系统上创建的,这将失败。一些可能在所有系统上工作,但有一些意想不到的后果是
var myArray = sometext.Split(new[] {'\r', '\n'},
StringSplitOptions.RemoveEmptyEntries);
一些可能令人担忧的事情之一是,它会删除在回车所有空行和分裂。
您可以使用Environment.NewLine
来确保您获得正确的一个。
\ r是carriage return \ n是newline。
Windows默认使用\ r \ n
(Environment.NewLine)
。
[改写澄清Environment.NewLine部分]
为了得到正确的字符到你的文字,你可以使用Environment.NewLine,这将根据报告你的平台上正确的字符分割。
由于其他答案中提到的原因,只做编辑说。 两者都正常,但是我个人会使用:
regex.split(sometext, "\n");
编辑:
使用Environment.Newline在其他的答案建议。
Environment.NewLine是要走的路;你的例子在一些场景中用\ r char's来留下文本,这是不可取的。 – NKCSS 2011-04-07 15:08:12
regex.split(sometext, "\r\n");
将是做到这一点的方法。
原因,两者似乎都给出了相同的结果是因为“\ n”在“\ r”后打断了字符串。所以你有一个带有尾部“\ r”的子字符串,除非你用十六进制编辑器或其他东西仔细看它,否则这不会很明显。
不过我建议使用,而不是“\ r \ n”个Environment.NewLine
首先 - 这不是C#。 .Net有'Regex.Split'。接下来,您可以提供更多细节 - 您是否需要保留空行?数据来自哪里? – Kobi 2011-04-07 15:23:26
@Kobi他本可以从内存中写出这些,这可以解释不正确的外壳。 – NKCSS 2011-04-07 15:24:36
@NKCSS - 当问一个问题''时,这是一个非常糟糕的做法:)' – Kobi 2011-04-07 15:26:13