将换行符(lf)替换为空字符串而不替换crlf中的lf#

时间:2012-08-01 03:41:43

标签: c# .net carriage-return linefeed

我想用空字符串“”替换文件中的任何换行符(Lf)。但是,我不希望它也替换CrLf中的Lf(行尾标志)。

我在想这样的事情:

fileContent.Replace("\n","");

上面的代码行会将CrLf中的Lf替换为Cr,所以我不希望这样。请给我一些正则表达式的建议,忽略CrLf中的Lf。

非常感谢。

PS:逻辑改变了。我用过这个:

fileContent = Regex.Replace(fileContent, @"\r\n(?=>)|(?<!\""\r)\n", ""); 

替换&gt;之后出现的所有CrLf使用空字符串(“”)并替换所有未跟随“Cr with empty string(”“)的换行符(Lf)。这是正确的吗?谢谢

2 个答案:

答案 0 :(得分:3)

除了其他Regular Expression答案,您只需使用Negative Look-Behind即可避免捕获不必要的数据:

string result = Regex.Replace(fileContent, @"(?<!\r)\n+", "");

答案 1 :(得分:2)

您可以使用正则表达式。下面的RegEx匹配\ n字符,这些字符位于输入的开头或以\ r开头。它捕获组中\ n之前的字符,以便它可以将其重新插入到字符串中。

string result = Regex.Replace(fileContent, @"(^|[^\r])\n", "$1");