← 中文资源

简体中文版本

字符串命名风格互转:camelCase、snake_case 与 kebab-case

在 camelCase、snake_case 和 kebab-case 之间转换标识符,按大小写边界与分隔符拆词,并校验输入类型。

阅读英文原文

功能说明

用户输入常混用 camelCase、snake_case 与 kebab-case,直接拼接会导致命名不一致。该工具先按大小写边界和分隔符拆词,再统一转换为三种常见命名风格。所有单词转为小写,首词之外的首字母大写,输出稳定且可预测。

关键代码

splitWords 校验输入类型,用正则在小写字母或数字与大写字母之间插入空格,并把下划线、连字符替换为空格;过滤空词后统一转小写。toCamelCase 对首词以外的单词做首字母大写,toSnakeCase 与 toKebabCase 分别用下划线和连字符连接。

return splitWords(input)
  .map((word, index) => (index === 0 ? word : word[0].toUpperCase() + word.slice(1)))
  .join("");

使用注意

该实现面向常见标识符,不保留连续大写缩写,例如 XMLHttpRequest 会被拆成 xml http request。数字与字母边界未拆分,版本号等输入需先预处理。非字符串输入会抛出 TypeError。转换结果不保证与原始命名完全可逆,也不能区分原本就包含空格或分隔符的文本。

验证方式

断言 toCamelCase(“user-profile_name”) 返回 userProfileName,toSnakeCase(“userProfileName”) 返回 user_profile_name,toKebabCase(“UserProfileName”) 返回 user-profile-name。传入 42 应抛出 TypeError,空字符串应返回空字符串,连续分隔符应被折叠而不会产生空段。