You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含特殊字符的驼峰式字符串转换为标题大小写的实现问题

兼容特殊字符的驼峰转标题大小写实现方案

原有实现仅能在大写字母前插入空格、首字母大写,存在核心缺陷:

  • 未处理分隔符(横杠、空格等)后的小写单词首字母大写逻辑
  • 未处理数字与相邻字母的边界空格补充
  • 未对分隔符后的驼峰片段做单独的空格拆分和大小写处理

调整后实现代码

function camelToTitleCase(text) {
  // 1. 基础拆分:大写字母前加空格、数字与字母边界加空格
  let result = text
    .replace(/([A-Z])/g, ' $1')
    .replace(/(\d)([a-zA-Z])/g, '$1 $2')
    .replace(/([a-zA-Z])(\d)/g, '$1 $2');
  
  // 2. 按横杠类分隔符拆分,仅处理有效内容段的首字母大写
  result = result.split(/(\s*-\s*)/g).map(segment => {
    // 横杠分隔符本身不做处理直接返回
    if (segment.trim() === '-') return segment;
    // 处理当前段首字母大写,合并多余空格
    return segment.trim().replace(/^\w/, c => c.toUpperCase()).replace(/\s+/g, ' ');
  }).join('');

  // 3. 全局去多余空格后返回
  return result.replace(/\s+/g, ' ');
}

效果验证

  • 测试输入1:Memberships1 - contactGroupMembership - contactGroupId
    输出结果:Memberships 1 - Contact Group Membership - Contact Group Id
  • 测试输入2:memberships1-contactGroupMembership-contactGroupId
    输出结果:Memberships 1 - Contact Group Membership - Contact Group Id

逻辑说明

  • 第一步正则匹配完成基础的驼峰、数字边界拆分,插入对应空格
  • 第二步拆分横杠分隔的独立片段,仅修改内容段首字母,保留分隔符原有格式
  • 第三步全局合并多余空格,避免多次插入空格导致的格式混乱

内容的提问来源于stack exchange,提问作者Code Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:30:04