24 converter 单位 · 货币 · 文件

文字转 kebab-case dash-case 免费 在线 安全

贴上一行,立刻读成 kebab-case。全部在你的浏览器里完成——敲进去的东西不会被送到任何地方——而且规则跟的是本页的语言,不是英文。

换一种写法

用连字符连起来的词
关于这种写法
它做什么 把一行切成词,写成小写,用连字符连起来。已经写成 camelCase 的一行也会在那里切开,所以“fooBar”变成“foo-bar”。
它不做什么 标点不会保留。逗号、句号和破折号是词与词之间的边界,不是要带走的字符——这正是你给CSS 类名或文件名想要的,而不是给散文想要的。
以及语言 切成词需要边界。中文和日文不用空格分词,所以这些文字写的一行会作为一个词返回——本页宁可这么说,也不愿在猜出来的地方下刀。
在哪里运行 在你的浏览器里。你在这里敲的东西不会被送到任何地方——草稿、密码、客户的名字,在这里和在文本编辑器里一样安全。

不上传任何文件

同一行,七种写法全在这里

写法 同一行,照那样写
大写CRÈME BRÛLÉE 两份 — STRASSE 17, FOOBAR
小写crème brûlée 两份 — straße 17, foobar
Title CaseCrème Brûlée 两份 — Straße 17, Foobar
snake_casecrème_brûlée_两份_straße_17_foo_bar
kebab-casecrème-brûlée-两份-straße-17-foo-bar
camelCasecrèmeBrûlée两份Straße17FooBar
一个 URL 地址creme-brulee-两份-strasse-17-foobar

这些写法从哪里来

大写字母和小写字母曾经是两套不同的字母。大写来自罗马,用凿子刻在石头上;小写源自加洛林小写体,由一支在羊皮纸上飞奔的笔塑成。印刷工把两者放在不同的字盘里——上面的一盘和下面的一盘——字盘早已不在,名字却留了下来。编程里的那些写法要年轻得多,它们被发明出来只为解决一件事:名字里不能有空格。snake_case 出自早期的 C,camelCase 出自 Smalltalk,kebab-case 出自 Lisp,而网址里的 slug 则出自一种需要:把一个供人阅读的标题放进一个不允许空格与变音符号的地址里。

你会在哪里遇到它们

每个词首字母大写属于标题和书籍封面;只有句首大写的写法属于其余几乎一切,并且越来越属于界面,因为读起来更快。snake_case 为数据库列和 Python 变量命名;camelCase 为 JavaScript 变量和 Java 方法命名;kebab-case 为 CSS 类名和网页项目中的文件名命名。slug 则是把一篇文章的标题变成地址最后一段的那个东西,也是此处唯一会被搜索引擎读到的转换。

常见问题

为什么转成大写有时会改变字母的个数?

因为大小写是语言的属性,而不是字符的属性。德语的 ß 转成大写是 SS,于是一个字母变成了两个。土耳其语有带点的 i 和不带点的 ı,而 i 的大写是 İ 而非 I——在这里弄错,一个土耳其词就变成了另一个词。本站的转换遵循各页自身语言的规则,所以同样的输入在土耳其语页面和英语页面上可能给出不同的结果。

slug 为什么要去掉变音符号和标点?

因为一个地址必须经得起被复制进消息、印在纸上、再用手重新敲一遍。带变音符号的字母在今天的网址里是合法的,但复制时会被百分号编码,一个本来可读的地址就变成了一串符号。把它们削减为朴素的字母、数字和连字符,地址才保持可读、好分享,并且无论出现在哪里都一模一样。

结果精确吗?

两个单位若以整数互相定义,那就是精确的——本页在数字上方说明了这一点,唯一的舍入在于显示多少位。若比值没有有限小数,本页给出十二位有效数字,并说明这个关系是近似的,而不是装作不是。

我敲进去的东西会离开我的设备吗?

不会。运算在你的浏览器里进行;没有任何东西被上传,也没有接收它的服务器。页面加载一次之后,断网也照样能用。

为什么要把文本转成 kebab-case

看看几乎任何维护良好的网站的地址栏,你会发现用连字符连在一起的单词:how-to-repot-a-fern、annual-report-2026、contact-us。看看样式表里面,类名也是这样:main-menu、card-title、button-primary。看看命令行工具的选项,你会发现 --dry-run 和 --no-cache。这就是 kebab-case(烤串式),单词都是小写,像肉串在扦子上那样串在连字符上,它是网络为人们能看到的名字所采用的形式。把文本转成 kebab-case,就是拿一个你会说出来的短语,把它变成能用于地址、类、分支或文件的名字。

粘贴一行,就能读到它的 kebab-case 形式。转换在你的浏览器中进行,你输入的任何内容都不会发送到任何地方,规则遵循本页的语言而不是英语。它把这一行切成单词,转为小写,并用连字符连接。已经写成 camelCase 的一行也会在那里被切开,所以 fooBar 变成 foo-bar。下面你会看到本页究竟做什么、不做什么,它如何对待不同语言中那些棘手的字母,为什么网络偏爱连字符而不是下划线,kebab-case 在哪里是惯例,以及匆忙把文本转成 kebab-case 的人容易掉进的陷阱。

转换做什么

切开,转小写,连接

本页首先把这一行切成单词,把每个转为小写,并用连字符连接。一行 Crème brûlée for 2 — straße 17, fooBar 会变成 crème-brûlée-for-2-straße-17-foo-bar。重音符号被保留,数字作为独立的单词存在,破折号和逗号消失了,而 fooBar 在大写处被切成两半。

切口落在哪里

单词边界是空格、标点符号、破折号、符号,或词内从小写字母到大写字母的转换。所以 Main Menu、mainMenu、main_menu 和 main--menu 全都变成 main-menu。转换接受几乎任何起点,并且总是到达同样的形式,这就是它成为名字进入样式表或地址之前稳妥的最后一步的原因。

没有多余的连字符

重复的分隔符被压成一个,开头和结尾也不会留下连字符。像 ...Hello, World!! 这样杂乱的短语出来是 hello-world,两端没有任何挂着的东西。

转换不做什么

它不保留标点

逗号、句点和破折号是单词之间的边界,而不是要带过去的字符。这正是 CSS 类或文件名所需要的,却不是散文所需要的。一个句子经过本页会变成一个名字,而原来的标点就消失了。

它不去掉重音

这一行保留它带重音的字母:crème-brûlée。现代的浏览器和服务器在名字和地址中接受它们,但较老的工具可能不行,而且带重音的地址在复制时会被转义成百分号编码。如果你需要纯字母,URL slug 页面也会去掉拉丁字母上的符号。

它不检查名字是否未被占用

两个不同的短语可能产生同一个名字,而本页不知道某个名字是否已经在你的站点或项目中使用。发布之前请检查是否冲突。

语言很重要

不带空格书写的文字

切分成单词需要边界。中文和日文书写时不带空格,所以这些文字的一行会作为单个单词回来。本页宁可这样说明,也不在它猜测的地方切开。

土耳其语与带点的 i

转小写遵循本页语言的规则。在土耳其语里,I 的小写形式是不带点的 ı,而 İ 的小写形式是 i。套用英语规则的转换器会改变这些词。本页遵循它所使用的语言。

德语与尖音 s

德语的 ß 本来就是小写,保持不变:straße-17。大写的 STRASSE 回来时是 strasse,因为大写形式不记得它来自 ß 还是来自两个字母。

从右到左的文字和印度诸文字

阿拉伯语、希伯来语和印度诸文字的单词之间有空格,没有大小写。本页用连字符连接它们的单词,不动那些字母。

为什么网络偏爱连字符

搜索引擎把连字符当作空格

搜索引擎把地址中的连字符当作单词之间的分隔符,所以 how-to-repot-a-fern 被理解为五个单词。相比之下,下划线通常被当作连接符,how_to_repot_a_fern 可能被读成一个很长的单词。对于人们会搜索的地址,连字符是更好的选择,而这个习惯已经传遍了整个网络。

可读性

链接加下划线时,下划线可能消失,因为那条线恰好落在下划线的位置。连字符则保持可见。这是个小点,但它解释了为什么这种形式在地址里扎下了根。

不区分大小写

地址用小写最安全,因为在某些服务器上,它们的部分内容可能区分大小写。kebab-case 按定义就是小写,这消除了一整类错误。

kebab-case 在哪里是惯例

网址

页面地址的最后一部分,即 slug,几乎总是 kebab-case。对于还必须不含重音的地址,请使用 URL slug 页面。

CSS 和 HTML

CSS 属性是 kebab-case(background-color、font-size),大多数类名和自定义属性(--brand-color)也是。像 data-user-id 这样的 HTML 属性遵循同样的风格。当你为组件起一个类名时,kebab-case 是读你样式表的人所期待的。如果组件还带有尺寸绘制,px 转 rem 有助于处理长度。

文件和文件夹名

用连字符连接的小写单词,是在每个系统上都安全的文件名,这就是静态站点生成器和许多框架把它们用于页面和资源的原因。

命令行选项和包名

像 --dry-run 这样的选项、npm 之类注册中心上的包名,以及像 feature/login-form 这样的 Git 分支,都遵循 kebab-case。变成这种形式的短语很可能被你使用的工具接受。

Lisp 及其近亲

这种形式来自 Lisp,在那里名字中允许连字符,因为这门语言在连字符两边没有空格时用不着把它当减号。kebab-case 这个名字是关于扦子的玩笑,并且流传了下来。

它不是惯例的地方

Python、Ruby 和数据库

这些偏好下划线,因为连字符会被读成减号。对它们来说,请使用 snake_case。

JavaScript 变量和 Java

变量名中的连字符就是减法。这些语言使用 camelCase。kebab-case 仍可能出现在它们的字符串值、文件名和 CSS 中。

散文和标题

kebab-case 用于名字。标题和句子应当保留它们的空格和大写。对于标题,可以考虑 Title Case。

如何在这里把文本转成 kebab-case

粘贴或输入你的文本

在第一个字段中输入短语。结果立刻出现在第二个字段中,所以你可以在输入时看着它变化。

检查名字

确保它读起来自然,而且不太长。超过约六十个字符的地址在搜索结果中会被截断。好的 slug 简短,并说明页面是什么。

复制它

按下复制按钮,把结果粘贴到你需要的地方。关于同一行的其他形式,请看下文。

同一行的全部七种写法

一张形式表

在转换器下方,一张表以本站提供的全部七种形式显示示例行:大写、小写、Title Case、snake_case、kebab-case、camelCase 和 URL slug。这是看清同样的词在每种形式中是什么样子的快速办法。

这些形式从何而来

两套字母表

大写字母和小写字母曾经是两套不同的字母表。大写字母是罗马式的,用凿子刻在石头上;小写字母源自加洛林小写体,由笔在羊皮纸上快速移动而成形。印刷工人把两者放在不同的字盘里,上盒和下盒,字盘早已不在,这些名称却保留了下来。

没有空格的名字

编程的形式要年轻得多,它们是为解决一个问题而发明的:名字里不能包含空格。snake_case 来自早期的 C,camelCase 来自 Smalltalk,kebab-case 来自 Lisp,而 URL slug 来自把人类的标题放进不允许空格和重音符号的地址的需要。

在实践中好用的名字

简短而有描述性

好的 kebab-case 名字用尽可能少的词说明这东西是什么。contact-us 比 please-get-in-touch-with-our-team 好。当你把文本转成 kebab-case 时,先把短语精简。

长期稳定

地址中的名字是承诺:其他网站会链接到它们。选择在改版之后仍然成立的名字,并避免日期和版本号,除非它们正是重点。

在整个项目中保持一致

如果每个页面地址、类名和文件名都遵循同一条规则,新来者就能猜对名字。当你为新页面把文本转成 kebab-case 时,看看邻近的页面来找出这种模式。

如果愿意,去掉停用词

有些人从地址中去掉 the、a 和 of 之类的词以保持简短。这是口味问题:较短的地址更整洁,较完整的读起来更好。

真实项目中的 kebab-case

给 CSS 类命名

样式表中的组件名读起来最好是简短的、带连字符的短语:card、card-title、card-footer。BEM 之类的方法论为变体添加双连字符和下划线,但每个类的基础仍然是小写带连字符的名字。当你为类把文本转成 kebab-case 时,你是在给下一位开发者一个他们能猜到的名字。

给站点的文件和文件夹命名

站点的结构常常映射它的地址,有一个叫 what-to-plant-in-april.html 的文件,或一个叫 garden-guides 的文件夹。一致的带连字符的名字使结构易于浏览、易于链接,也易于在系统之间迁移。如果某个页面需要数据文件,CSV 转 JSON 和本站的其他转换器可以准备它,而同样的命名规则适用于结果。

给版本控制中的分支和标签命名

为每项工作使用分支的团队把它们命名为 fix-login-redirect 或 add-search-filter。分支名在列表、拉取请求和聊天中被阅读,简短的带连字符的短语容易扫视。许多团队用类型加斜线作前缀:feature/add-search-filter。要生成斜线后面的部分,从任务的标题把文本转成 kebab-case。

给属性和自定义属性命名

CSS 中的自定义属性,如 --space-large 和 --brand-primary,习惯上是 kebab-case,HTML 的 data 属性也是。如果你还处理颜色,名字背后的数值可能需要 HEX 转 RGB 的记法。

保存新旧名字的记录

当你重命名一批文件或类时,保留一份两列的新旧名字清单。它有助于查找替换、重定向,以及向同事解释发生了什么。转换器让新名字保持一致;清单让变更可以审计。

制作经久耐用的地址

先想想读者

地址先被人读,再被机器读。简短清晰的地址告诉访客链接将带他们去哪里,并鼓励他们点击。当你为 slug 把文本转成 kebab-case 时,想象它被粘贴进一条没有其他解释的消息,问问它是否说得通。

不要重复栏目

如果地址里已经有一个叫 recipes 的文件夹,页面就不必叫 best-recipes-for-summer。像 summer-salads 这样的名字就够了,地址读作 recipes/summer-salads,没有回声。

把文本转成 kebab-case 时的陷阱

在连字符意味着减号的地方使用它

在大多数编程语言中,名字里的连字符就是减法。不要在这类语言的变量中使用 kebab-case。

忘了名字可能已经存在

两个页面用同一个 slug 会冲突。发布之前请检查你的站点或项目。

更改已发布的地址

地址一旦公开,更改它会破坏链接。如果非改不可,请从旧地址设置重定向。

很长的名字

很长的地址不便分享,在搜索结果中还会被缩短。转换之前先精简短语。

人们在转换前问的问题

标点会怎样?

它被当作单词之间的边界,不会被带过去。

数字会保留吗?

会,作为独立的单词,用连字符隔开。

它能处理 camelCase 的输入吗?

能。词内的大写字母标记一个切口,所以 fooBar 变成 foo-bar。

我可以用于其他语言吗?

可以,采用本页语言的规则。不带空格的文字,例如中文和日文,会作为单个单词回来。

我的文本会被上传吗?

不会。你在这里输入的内容从不发送到任何地方,所以草稿、密码或客户的姓名在这里和在文本编辑器里一样安全。

我如何改成得到下划线?

使用把文本转成 snake_case。

一个实例

假设你在给网站添加新栏目,编辑给了你标题 Spring Garden: What To Plant In April (and Why)。你粘贴它,读到 spring-garden-what-to-plant-in-april-and-why。它太长,所以你把标题缩短为 What to Plant in April 并再次转换:what-to-plant-in-april。你把它用作文件名和地址,同样的词、同样的形式,也用作样式表中标题的类。三个地方,一个名字,只写一次。

一份简短的清单

转换之前

把短语缩短到名字必须说明的内容。检查没有现有的名字与之匹配。

转换时

粘贴短语,阅读结果,并确保它自然且相当简短。

转换之后

在每个适用的地方使用同一个名字,并且如果你曾更改已发布的地址,请设置重定向。

常见错误

对变量名使用 kebab-case

在大多数语言中,连字符意味着减号。

把名字做得太长

简短的名字更容易分享和记住。

更改已发布的地址

这会破坏链接。非改不可时请重定向。

你的文本留在你的设备上

转换在本地进行。你的文本由你自己的浏览器处理,没有任何内容被发送到任何地方。事后没有什么要删除的,也没有账户要创建。这就是把文本转成 kebab-case 的朴素方式。

小结

要在这里把文本转成 kebab-case,粘贴一行,读到它的结果:单词被切开、转为小写并用连字符连接。已经写成 camelCase 的一行也会在那里被切开,所以 fooBar 变成 foo-bar。本页不保留标点:逗号、句点和破折号是单词之间的边界,而不是要带过去的字符,这正是 CSS 类或文件名所需要的,却不是散文所需要的。切分成单词需要边界,所以不带空格书写的中文和日文会作为单个单词回来。转小写遵循本页的语言。网络偏爱连字符,因为搜索引擎把它们当作空格。没有任何内容被上传。

长度与面积 质量与体积 温度 货币