0

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

我在想这样的事情:

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

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

非常感谢。

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

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

将出现在 > 之后的所有 CrLf 替换为空字符串 (""),并将所有不跟在 "Cr 后面的换行符 (Lf) 替换为空字符串 ("")。正确吗?谢谢

4

2 回答 2

3

除了其他Regular Expression答案之外,您还可以使用Negative Look-Behind来避免捕获不必要的数据:

string result = Regex.Replace(fileContent, @"(?<!\r)\n+", "");
于 2012-08-01T04:15:41.860 回答
2

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

string result = Regex.Replace(fileContent, @"(^|[^\r])\n", "$1");
于 2012-08-01T03:44:37.353 回答