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

如何修改JS函数使连字符后的首字母转为大写?

字符串首字母大写(含连字符)处理方案

原函数

原函数仅支持空格分隔的单词首字母大写:

firstLetterUppercase(str: string) {
    let splitStr = str.toLowerCase().split(' ');
    for (let i = 0; i < splitStr.length; i++) {
      splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);
    }
    return splitStr.join(' ');
}

需求

需要兼容连字符连接的字符串(如'Bielsko-biala'),让连字符后的首字母也转为大写,同时保留原空格分隔的处理逻辑。

修改方案

方案1:正则表达式实现(简洁高效)

利用全局正则匹配字符串开头、空格或连字符后的小写字母,统一转为大写:

firstLetterUppercase(str: string) {
    return str.toLowerCase().replace(/(?:^|[\s-])[a-z]/g, match => match.toUpperCase());
}

说明:

  • str.toLowerCase():先将整串转为小写,确保格式统一
  • 正则/(?:^|[\s-])[a-z]/g:匹配字符串起始位置、空格或连字符后的任意小写字母,全局遍历所有符合条件的位置
  • 替换逻辑:将匹配到的字符(含前置分隔符)转为大写,最终实现空格、连字符后首字母大写的效果

方案2:分步拆分实现(直观易懂)

通过两次拆分(空格→连字符),分别处理每个子部分的首字母后再拼接:

firstLetterUppercase(str: string) {
    return str.toLowerCase().split(' ')
      .map(word => 
        word.split('-')
          .map(part => part.charAt(0).toUpperCase() + part.substring(1))
          .join('-')
      )
      .join(' ');
}

说明:

  1. 先按空格拆分单词数组,对每个单词执行二次拆分
  2. 按连字符拆分单词为子部分,逐个将子部分首字母大写
  3. 用连字符拼接子部分还原单词,最后用空格拼接所有单词得到结果

测试效果

输入'bielsko-biala',返回'Bielsko-Biala';输入'warszawa krakow bielsko - biala',返回'Warszawa Krakow Bielsko - Biala',两种场景均符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:17:24