2

我只需要删除LF,而不是CRLF。有什么想法吗?

我可以使用 PHP、notepad++、shell 脚本等

在此处输入图像描述

4

4 回答 4

8

在记事本++

试试这个 :(?<!\r)\n

确保在搜索选项中设置正则表达式选项,希望对您有所帮助

于 2012-11-21T10:17:43.463 回答
3

使用负面的回顾。

$str = preg_replace("#(?<!\r)\n#", '', $str);

小提琴

于 2012-11-21T10:16:56.773 回答
1

LF 代表换行符,它是 ASCII 10 或 0x0A 或“\n”(在 PHP 中)。所以就这样做

search_replace( "\n", '', $text)

请注意 CRLF 实际上是两个字符 CR(回车)+ LF。如果您删除 LF,您的文本中仍然会有 CR(如果有)。

编辑

如果您只想删除独立的 LF,但保留 CRLF,那么上面的代码是错误的,因为它会将 CRLF 变成 CR。用来preg_replace()做那个

preg_replace("/(?<!\\r)\\n+(?!\\r)/", '', $text);

如果出于任何原因您不想使用preg_replace()(但无论如何都要使用它),那么您可以尝试这种愚蠢的方法:

// save CRLFs by replacing with some text that does 
$tmp = str_replace("\r\n", 'S0m3L1k3LyUn1Qu3T3X7', $text);

// get rid of LFs
$tmp = str_replace("\n", '', $tmp );

// restore CRLFs
$text = str_replace('S0m3L1k3LyUn1Qu3T3X7', "\r\n", $tmp);
于 2012-11-21T09:49:04.910 回答
1

在 Notepad++ 中,您使用搜索/替换、勾选扩展(左下角)和替换

\n

凭什么。

于 2012-11-21T09:49:17.913 回答