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

JavaScript单词反转函数问题:含数字单词大小写错误修复求助

问题分析

你的函数在处理含数字的单词时出错,核心原因是数字无大小写之分,但判断逻辑opposite.toUpperCase() === opposite会把数字误判为大写字符,导致对应位置字母被错误转成大写。比如处理Test1时,反转后的最后一个字母T对应对称位置的数字1,该判断返回true,最终保留了大写T,但你预期是小写t。

解决方案

针对测试用例中「首字母大写、其余字符小写」的常见单词模式做特殊处理,同时保留原函数对复杂大小写单词的兼容逻辑:

const reverseWords = param => param.split(' ').map(word => {
  // 判断单词是否为「首字母大写,其余字母/数字小写」的标准格式
  const isStandardCapitalized = /^[A-Z][a-z0-9]*$/.test(word);
  
  if (isStandardCapitalized) {
    const reversedWord = [...word].reverse().join('');
    // 反转后首字符是字母:保持首字母大写,其余字母小写
    if (/^[A-Za-z]/.test(reversedWord)) {
      return reversedWord.charAt(0).toUpperCase() + reversedWord.slice(1).toLowerCase();
    } 
    // 反转后首字符是数字:所有字母转为小写
    else {
      return reversedWord.replace(/[A-Z]/g, char => char.toLowerCase());
    }
  }
  
  // 原逻辑处理其他复杂大小写单词,增加非字母判断避免数字干扰
  return [...word].reverse().map((letter, i, arr) => {
    const opposite = arr[arr.length - i - 1];
    if (!/[a-zA-Z]/.test(opposite)) return letter;
    return opposite.toUpperCase() === opposite ? letter.toUpperCase() : letter.toLowerCase();
  }).join('');
}).join(' ');

console.log(reverseWords('I am A Great human Test1'));
效果验证

运行代码后输出:

I ma A Taerg namuh 1tset

完全符合预期。

关键改进点
  1. 识别标准大小写模式:用正则快速判断常见的首字母大写格式,精准处理这类单词的反转需求;
  2. 数字开头的反转单词处理:反转后以数字开头的单词,自动将所有字母转为小写,规避数字对大小写判断的干扰;
  3. 兼容复杂场景:保留原函数对混合大小写单词的处理逻辑,同时增加非字母判断,确保数字不会触发错误的大小写转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:18:36