问题描述

第一次使用 markdown 开始,中英文之间的空格就是让我头疼的一个问题。在使用 latex 时,中英文之间的空格会自动处理。这让我以为撰写其它格式的文档时也会有相同的处理方式,可我最终发现这不过是我自己一厢情愿的想法罢了。

我做的尝试

全半角的切换

今天,我开始尝试解决这个问题。经过一系列的努力发现我其实可以通过半角与全角的切换来完成。

以前我一直使用全角标点,这样造成的问题是在进行中英文混排时,中英文的切换频繁,效率低下。中英文之间的空格也让我头疼不已。

今天我发现,可以通过将符号调整为半角来提高输入的效率。当使用半角符号时,输入的空格为标准空格,在中文模式下也可以直接输入英文。当使用全角时,中文输入模式下的空格为全角空格,输入一个半角空格需要切换输入模式为英文。这算是一大改善吧!

尝试使用 sed 来解决

我也尝试使用 sed 来解决这个问题。不过由于 sed 对于 unicode 的匹配支持的相对薄弱,我无法找到一个直接的方式来处理中英文之间的空格。多次尝试无果后,我决定换一种思路,使用反向选择的方式来解决这个问题。

我想既然我不能直接匹配到中文字符,那么我能不能通过反向匹配除了中文之外的字符来达成呢?事实证明这一点能够做到。依靠 POSIX 字符类我就能使用反向匹配来匹配到中文字符。

这里我首先将自己已经排版好的文章转换为缺少空格的内容。使用的 sed 命令如下

s/\([[:upper:][:lower:][:digit:][:punct:]]\+\)[  ]\+\([^[:upper:][:lower:][:space:][:punct:][:digit:]]\)/\1\2/g
s/\([^[:upper:][:lower:][:space:][:punct:][:digit:]]\)[  ]\+\([[:upper:][:punct:][:lower:][:digit:]]\+\)/\1\2/g

添加空格的命令如下:

 s/\([[:upper:][:lower:][:digit:]]\+\)\([^[:upper:][:lower:][:space:][:punct:][:digit:]]\)/\1 \2/g s/\([^[:upper:][:lower:][:space:][:punct:][:digit:]]\)\([[:upper:][:lower:][:digit:]]\+\)/\1 \2/g

局限性

由于 [:punct:] 会匹配半角与全角符号,在中文环境中全角符号后不需要添加空格,半角符号前后需要添加空格。对半角符号前后空格的添加无法使用 POSIX 字符类完成。可以使用普通字符类完成。

中英文之间的空格处理相关推荐

  1. 你打字为什么不能在中英文之间加个空格?

    摘要:写作最基本的规则,另推荐个神器快速在中英文之间添加空格. 这里是「每周分享」的第 19 期.往期分享内容可以在公众号后台的 「不务正业」菜单中找到,Python 类的文章在另一个「不误正业」菜单 ...

  2. html5中英文间自动空格,如何快速在文章中英文数字间自动添加空格

    在中文.英文.数字之间用空格隔开,观感和阅读上显得更加分明,也就是说整体的排版会更加的好看,但是如果在编写文章的时候去添加,就会显得特别的繁琐和降低编辑或写作效率了,不过为了养成习惯,还是推荐在编写的 ...

  3. R语言ggplot2可视化条形图可视化控制底部和x轴之间没有空格实战:即条形图的底部直接和坐标轴连接

    R语言ggplot2可视化条形图可视化控制底部和x轴之间没有空格实战:即条形图的底部直接和坐标轴连接 目录

  4. requests(二): json请求中固定键名顺序消除键和值之间的空格

    继上一篇requests发送json请求的文章后,实际工作中遇到了以下2种情况. 1:服务端要求json字符串,键名的顺序固定  2.服务端对于接收到的json数据中,若key和value之间有空格, ...

  5. [html] 如何让<p>测试 空格</p>这两个词之间的空格变大?

    [html] 如何让 测试 空格 这两个词之间的空格变大? 这边有这么两种方法:通过给p标签设置word-spacing,将这个属性设置成自己想要的值.将这个空格用一个span标签包裹起来,然后设置s ...

  6. 解决行内块元素(inline-block)之间的空格或空白问题

    解决行内块元素(inline-block)之间的空格或空白问题 参考文章: (1)解决行内块元素(inline-block)之间的空格或空白问题 (2)https://www.cnblogs.com/ ...

  7. 统计一个字符串中英文字母、空格、数字和其它字符的个数

    1 package demo; 2 import java.util.Scanner; 3 /** 4 * 统计一个字符串中英文字母.空格.数字和其它字符的个数 5 */ 6 public class ...

  8. Excel如何在姓名与字母之间加空格

    如下图,是某次考试学生成绩,但是老师在录入时直接将姓名和成绩录入到同一单元格中,现在想在姓名后面添加一个空格 选中成绩数据区域 点击下图选项(Excel插件,百度即可了解安装方法) 点击[更多],选择 ...

  9. [C语言]统计单词:输入一行字符(其中仅包含英文字母和空格),用函数编程统计其中有多少单词。假设单词之间以空格分开。

    输入 输入一行字符(其中仅包含英文字母和空格),并且长度不超过20. 输出 输出单词数量,单词之间以空格分开. 输入示例 I am a student 输出示例 4 数据范围 输入为字符串,并且长度不 ...

最新文章

  1. 笔记本电脑无线被禁用 是哪个服务器,无线网关,小编教你笔记本无线网络禁用后怎么开启...
  2. Spring 面试问题
  3. idea java编译报错_intellij-idea,java_idea 编译报错,intellij-idea,java - phpStudy
  4. Apache Kudu 1.9.0 发布,支持位置感知
  5. mybatis中自建的类型别名
  6. flask + celery实现定时任务和异步
  7. Confluence 6 选择一个外部数据库
  8. php socket 多次发送,php模拟socket 多次发送数据的实现方法
  9. c primer plus--运算符、表达式和语句(第5章)--习题
  10. IE11不支持Selenium 2.0的解决方法
  11. 关于不使用web服务实现文本框自动完成扩展
  12. Windows中的用户和组以及用户密码破解
  13. MAX25————用vray还原模型在Substance Painter的光照以及材质效果
  14. 铁路订票系统的简单设计(转自云风)
  15. 装黑苹果的那些事儿(以ThinkpadE540为例)
  16. 如何写 peer review
  17. 【NOI1999、LOJ#10019】生日蛋糕(搜索、最优化剪枝、可行性剪枝)
  18. OpenGL(十二)——Qt OpenGL绕着坐标轴旋转多边形
  19. [禅悟人生]自卑裹足不前, 就无法成就自己
  20. 腾讯位置服务---->(小程序简单使用+显示附近WC步行路线)

热门文章

  1. 安装sql server 2008时的错误,针对SQL Server 注册表项的一致性验证失败​
  2. 软件测试 | 测试开发 | Git分支管理搞定在线合并和本地合并
  3. 使用 Docker 运行微信 PC 客户端
  4. es routing 简介
  5. 数据结构,关于链表的问题,为何直接free()不会造成断链。引用的好处
  6. 请教一下水卡校验算法
  7. Linux刻录固态硬盘教程,linux迁移至固态硬盘全过程
  8. 银联收单清算体系及处理流程
  9. 计算机专业网名英语翻译,100个高端大气英文网名(带翻译)
  10. stata最大值最小值命令_用Stata实现数据标准化