功能说明
用户输入常混用 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,空字符串应返回空字符串,连续分隔符应被折叠而不会产生空段。