EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

盘古之白:中西文之间批量添加空格

问题背景

中文文本中夹用英文时,应根据所选用的中英文字体、字符间距以及排版的视觉效果决定英文词句与中文文字之间是否留有空格间距。如留空格,应保证体例的统一。
——中华人民共和国新闻出版行业标准 CY/T 154—2017号《中文出版物夹用英文的编辑规范》第 8.1 节

在文档写作当中,常需要对中西文混合排版。Microsoft Word 等富文本编辑器一般带有混合排版优化功能,即使不手动添加空格,渲染过程中也会在中英文之间留出空白。下图是一个例子:

上图中数字“2023”和前后汉字之间没有空格,但是在渲染过程中留出空白。

对于没有该渲染功能的纯文本编辑器,需要编辑者手动添加空格。本文介绍使用正则表达式和搜索替换功能在文本编辑器文档编辑中批量添加中英文之间的空格。

在 VSCode 编辑器当中,对 markdown 文档进行格式化可以自动实现中西文之间添加空格。

替换原理

先中文后西文匹配串:

1
([㑇-﨩])([A-Za-z0-9%()])

先西文后中文匹配串:

1
([A-Za-z0-9%()])([㑇-﨩])

替换串:

1
$1 $2

替换效果

替换前效果:

1
蚂蚁老师从2021年开始教授《C语言程序设计基础》,是NJU最可爱的C语言老师。

替换后效果:

1
蚂蚁老师从 2021 年开始教授《C 语言程序设计基础》,是 NJU 最可爱的 C 语言老师。