数字缩写生成器

保留首尾字母、用中间字母数量替换中段,把单词转换为数字缩写。可调最小词长、可选小写输出,支持整句转换。

internationalization 变成 i18n,其他词同理。 输入一个单词或一整句话。每个足够长的单词会保留首尾字母,中间的字母用数量替代。较短的词保持原样,结果依然可读。

数字缩写是怎么压缩一个单词的

i18n 这种写法

数字缩写(numeronym)是用数字来缩短的词。软件圈使用的这一种只有一条规则:保留第一个字母,保留最后一个字母,中间的全部字母用被省略的字符数替代。internationalization 在开头的 i 和结尾的 n 之间有十八个字母,于是写作 i18n。accessibility 得到 a11y,localization 得到 l10n,Kubernetes 得到 k8s。

这一惯例通常追溯到 1980 年代的 DEC 公司,员工用这种方式缩短冗长的内部术语;后来它随开源项目扩散开来——这些项目需要把同样几个笨重的概念重复上千次。它能流行是因为足够机械:与首字母缩略词不同,没有什么需要发明、也没有什么需要记忆。给定完整单词,所有人推导出的缩写都一样;给定缩写和上下文,读者通常能还原出原词。

为什么要设最小词长

只有长词才划算。把规则套用到 "hello" 会得到 h3o,省下两个字符,却把可辨识度全赔进去了。更糟的是短缩写会频繁碰撞:几十个常见的五字母单词共享同样的首字母、尾字母和长度,缩写便不再指向任何东西。

因此本工具设有最小词长,默认为五。低于阈值的单词原样通过,这正是你可以整句粘贴而结果仍然可读的原因。把最小值调到八或十,就能得到实践中常见的保守风格:只缩写真正笨重的术语,周围的行文保持原样。

什么时候有帮助,什么时候有害

在已经共享同一套词汇的人之间,数字缩写是好用的行话。在无障碍团队里,a11y 比完整单词输入更快、阅读更快,含义也从不含糊。它们也很适合做标识符:短、纯 ASCII、在项目内无歧义,足够稳定,可用于包名、目录名和配置键。

它们在新人和搜索面前会失效。没接触过这个术语的读者无法展开它,而且不像首字母缩略词那样有大写字母提示「这里有个缩写」。屏幕阅读器可能把 a11y 逐字念出而非当作一个词;在文档里搜索 "localization" 也匹配不到只写 l10n 的页面。务实的折中就是优秀文档一直在用的做法:首次出现时写完整术语,后面用括号给出数字缩写,此后自由使用简写。

开源说明:使用原生 JavaScript 实现,不依赖第三方库。

常见问题

什么是数字缩写?
用数字缩短的词。在软件领域指保留首尾字母、中间用被省略的字母数替代,例如 i18n。
为什么 internationalization 写作 i18n?
开头的 i 和结尾的 n 之间有十八个字母。同样的规则让 accessibility 变成 a11y,localization 变成 l10n。
为什么最小词长默认是五?
低于这个长度几乎省不下字符,还会与许多其他词碰撞。设为五既能保持短词可读,又能缩短真正的长词。
能处理带重音的字母和 emoji 吗?
可以。计数按 Unicode 码点进行,带重音的字符各算一个字母,emoji 也不会被拆成碎片。
标点符号会怎样?
单词周围的标点会被保留,只缩短字母部分,因此 "accessibility," 会保留逗号,变成 "a11y,"。
代码里该用数字缩写吗?
在已经共享这套词汇的项目内做标识符是可以的。写文档时请先写完整术语,并在括号中引入数字缩写。