如何将空行上的 CRLF 转换为 \n,而不影响其他地方的 CRLF 代码

如何将空行上的 CRLF 转换为 \n,而不影响其他地方的 CRLF 代码

我正在撰写一部家族历史小说,并且一直在另一台电脑上进行创作。

我使用旧版本的 UltraEdit 作为文字处理器。但它与 XP 之后的 Windows 不太兼容。我读过一篇关于如何在 Windows 7 上运行它的文章,它成功了,并且在将数据传输到我的 Windows 10 笔记本电脑后仍然可用。然后有一天它崩溃了,我无法修复它。所以很多朋友告诉我试试 Notepad++,声称它比 UltraEdit 13 更好。我尝试在 Notepad++ 中处理它,但格式被破坏了。我的段落不是像我写的那样全部在一行上并自动换行到屏幕边缘,然后在它们之间有一个空行,而是全部被破坏了。我打开了“显示符号”,结果在每个段落行的末尾都有一个 CRLF,后面跟着一个用于空行的 CRLF,里面有多个 CRLF。比我想要的多出大约 200%。

我曾尝试在此处输入一些文本以显示它在 Notepad++ 中的外观,但此留言板已修复它,因此它看起来应该如此。所以我无法向您展示它的外观。但是,我在这里的某个地方找到了这个,对 \R(?!\R) 执行 RegEx 搜索\替换,这修复了段落中的行。但是,我想要段落之间的空行,因为我没有考虑就将它们添加进去了。所以现在每个段落只有一个 CRLF,是否有 RegEx 搜索\替换可以在每行末尾添加一个 \n,并在文本上,以便在已经写好的段落之间创建行?这让我抓狂。但我负担不起更新 UltraEdit 的费用。而且我可能无论如何都不喜欢新版本……

答案1

不确定我是否理解清楚,仅当换行符前面和后面都没有其他换行符时,您才想要删除换行符。


这是做的工作:

  • Ctrl+H
  • 找什么:(\R\R)\R*|\R
  • 用。。。来代替:$1
  • 选择 正则表达式
  • Replace all

解释:

(\R\R)      # 2 linebreaks (i.e. paragraphs spacing)
\R*         # 0 or more linebreaks, optional
|           # OR
\R          # a single linebreak

替代品:

$1          # content of group 1, 2 linebreaks

答案2

在 Notepad++ 中很容易修复:

  • 按下 打开CtrlH“搜索/替换”对话框。

更换双 EOL

  • 搜索模式扩展

  • 输入\r\n\r\n找什么:,即 CR 和 LF 字符的括号。

  • 输入\r\n\用。。。来代替:

  • 点击全部替换

    每次单击该按钮时,重复的 CR/LF 对的数量都会减少贯穿整个文档。这将创建一个单身的每段末尾换行。将上述论点切换为双倍的行间距。

如果你想要一致双线间距

  • 改变全部单身的行距,如上图。
  • 然后搜索全部\r\n并替换为\r\n\r\n一次

甚至可以使用更高级的搜索功能正则表达式

相关内容