CamelCase转换为Title Case时首字母处理失效问题咨询
JavaScript实现指定规则的Title Case转换
最终可用代码
function convertToTargetTitle(str) { return str // 拆分驼峰:小写字母后跟大写字母的位置中间加空格 .replace(/([a-z])([A-Z])/g, '$1 $2') // 拆分字母与数字的边界,中间加空格 .replace(/([a-zA-Z])(\d)/g, '$1 $2') .replace(/(\d)([a-zA-Z])/g, '$1 $2') // 统一连字符格式,确保连字符前后各有一个空格 .replace(/\s*-\s*/g, ' - ') // 所有单词首字母大写 .replace(/\b([a-z])/g, (match) => match.toUpperCase()) // 合并多余空格并去除首尾空格 .replace(/\s+/g, ' ') .trim(); }
测试验证
你给出的两个测试用例执行效果如下:
- 输入
memberships 1 - contactGroupMembership - contactGroupId,输出Memberships 1 - Contact Group Membership - Contact Group Id - 输入
memberships1-contactGroupMembership-contactGroupId,输出Memberships 1 - Contact Group Membership - Contact Group Id
原代码问题说明
你之前的实现只完成了驼峰拆分加空格的逻辑,缺少三个核心处理步骤:
- 没有处理字母和数字相邻的拆分场景
- 没有统一连字符的前后空格格式
- 没有补充单词首字母大写的逻辑
内容的提问来源于stack exchange,提问作者Code Guy
相关产品推荐
相关产品推荐

