连字符(-)用于合成词:well-known。连接号(–)表示范围和连接:第 20–24 页。长破折号(—)在句中分隔插入语,作用类似一个语气更强的逗号。它们是三个宽度递增、各自独立的 Unicode 字符,解析器、搜索和排版系统对它们的处理方式都不同。
三个字符一览
名称源自传统铅字排版:连接号(en dash)的宽度等于大写字母 N,长破折号(em dash)的宽度等于大写字母 M。
| 符号 | 名称 | 码位 | 宽度 | 主要用途 |
|---|---|---|---|---|
| - | 连字符-减号 | U+002D | 最短 | 合成词 |
| – | 连接号(En dash) | U+2013 | 中等 | 范围与连接 |
| — | 长破折号(Em dash) | U+2014 | 最长 | 句中停顿与分隔 |
第一个字符就在键盘上,另外两个则不是——这正是大多数混淆的实际根源:人们在该用连接号或长破折号的地方打了连字符,因为它是唯一不需要快捷键就能输入的符号。
连字符
连字符把多个部分连成一个整体。
- 名词前的复合修饰语:a well-known author、a twelve-year-old dog、a state-of-the-art facility。注意,当这个短语移到名词之后时,连字符会消失:the author is well known。
- 某些前缀,尤其是为了避免字母碰撞或歧义时:re-elect、co-owner、re-cover a chair(区别于 recover from illness)。
- 两端对齐排版中行尾的单词断行。
- 复合数字:twenty-three。
严格来说,键盘上这个字符叫连字符-减号(hyphen-minus)——一个码位同时充当连字符、减号和命令行参数标志,这是从打字机和早期 ASCII 继承下来的。Unicode 确实有专用的连字符(U+2010)和减号(U+2212),但几乎没有地方使用它们,你也不要开始用:- 才是解析器、shell 和 URL 所期望的字符。
连接号
连接号表示到、至或之间。它是连接,而不是合并。
- 数字范围:第 20–24 页、2020–2024、9am–5pm。文体规范建议不要与文字混用:应写 from 2020 to 2024,而不是 from 2020–2024。
- 独立实体之间的连接或对立:Paris–Dakar 拉力赛、doctor–patient 关系、east–west 轴线。这里与连字符的区别很重要——用连字符的 Franco-German 暗示一个融合的整体,而用连接号的 France–Germany 表示相互关联的两方。
- 其中一部分本身已是多词短语的复合修饰语:a post–World War II settlement。如果用连字符,它只会连接到 "World"。
- 比分和投票结果:3–1 获胜。
连接号是三者中使用最少、也最常被连字符替代的符号。在行文中,这种替代只是细微的排版不精确,很少有读者会注意到。但在数据中就不细微了:用连接号书写的日期范围无法匹配查找连字符的正则表达式。
长破折号
长破折号用于分隔短语,造成的停顿比逗号更强,又比句号更弱。
- 成对使用,包住插入语:The results — which nobody expected — were clear.
- 单独使用,引出结论或转折:She checked everything twice — and still missed it.
- 在对话中表示被打断的话。
是否加空格是唯一真正存在分歧的文体问题。美国出版惯例(Chicago Manual of Style)让长破折号紧贴文字:word—word。英国惯例(Oxford 及多数英国报纸)则改用两侧带空格的连接号:word – word。两种写法都正确,关键是同一篇文档内保持一致。AI 输出通常使用带空格的长破折号——word — word——这是两种惯例的混合体,所以在熟悉任一传统的编辑看来会隐约觉得不对劲。
长破折号还成了 AI 生成文本的一种非官方标志,因为模型使用它的频率远比人类稳定。这一点在 为什么 ChatGPT 用这么多长破折号 中有详细讨论。
如何输入每个符号
| 平台 | 连接号(–) | 长破折号(—) |
|---|---|---|
| macOS | Option + - | Option + Shift + - |
| Windows | Alt + 0150 | Alt + 0151 |
| Linux | Ctrl + Shift + u,2013 | Ctrl + Shift + u,2014 |
| Word / Docs | 单词之间输入两个连字符会自动更正 | 输入两个连字符会自动更正 |
| HTML | – |
— |
| iOS / Android | 长按连字符键 | 长按连字符键 |
Windows 的 Alt 代码需要数字小键盘,这就是为什么很多笔记本用户干脆从来不输入这些字符。
什么时候混用真的会出问题
在行文中,该用连接号的地方用了连字符只是排版上的小瑕疵。但在行文之外,这是三个不同的码位,区别是功能性的:
- 搜索和查找替换按精确字符匹配。搜索
2020-2024找不到2020–2024。 - Shell 命令需要 U+002D。从文档里粘贴的
--force如果被自动更正变成了长破折号,就不再是有效的参数标志,而报错信息里不会提到破折号。 - CSV 和 JSON 把连接号和长破折号当作普通文本,通常没问题——直到某个本该与键名匹配的值匹配不上。
- URL 和 slug 只接受 ASCII 连字符。
- 排序和去重把三者视为不同字符,看起来完全相同的条目不会被归为一组。
如果需要统一整篇文档中的破折号,删除文本中的长破折号 可以将它们替换为你选择的替代符号,并报告替换数量,让你能核对数量是否符合预期,而不是盲目信任一次静默替换。引号方面的类似陷阱在 为什么弯引号会破坏代码 中有介绍。
常见问题
长破折号和连接号有什么区别?
连接号(–,U+2013)表示"到"或"至",用于标记范围,如 2020–2024。长破折号(—,U+2014)在句中分隔短语,作用类似一个语气更强的逗号。长破折号的宽度大约是连接号的两倍,两者是独立的 Unicode 字符。
什么时候应该用连字符而不是破折号?
要把多个词合成一个整体时用连字符:well-known、twenty-three、re-elect。如果你要表达的是范围、两方之间的连接,或句中的停顿,就应该用连接号或长破折号。
长破折号两侧要加空格吗?
取决于所遵循的文体规范。美国惯例让它紧贴文字(word—word),英国惯例通常使用两侧带空格的连接号(word – word)。两种写法都正确,关键是同一篇文档内保持一致。
如何输入长破折号?
在 macOS 上按 Option + Shift + 连字符键。在 Windows 上按住 Alt 并在数字小键盘上输入 0151。在 Word 和 Google Docs 中,在单词之间输入两个连字符会自动转换。在手机上,长按连字符键。
用连字符代替连接号要紧吗?
在行文中,这只是大多数读者注意不到的小瑕疵。但在数据、代码、URL 或任何会被搜索和解析的内容中,影响很大——因为三者是不同的字符,精确匹配会失败。