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

JavaScript实现单词反转时如何观察并保留大写字母位置特征

解决方案

核心实现逻辑:先记录原单词每个位置的大小写状态,统一转小写完成字母反转后,再按照原有位置的大小写规则重置对应字符的大小写即可,修改后的完整代码如下:

document.getElementById("btnReverse").onclick = function () {
  reverse();
};

String.prototype.replaceAt = function (index, replacement) {
  if (index >= this.length) {
    return this.valueOf();
  }
  return this.substring(0, index) + replacement + this.substring(index + 1);
};

function reverseWord(word) {
  // 记录原单词每个位置是否为大写
  const upperCaseFlags = [];
  for (let i = 0; i < word.length; i++) {
    upperCaseFlags.push(word[i] === word[i].toUpperCase());
  }
  // 统一转小写后再执行反转,避免大小写随字母位置移动
  const lowerWord = word.toLowerCase();
  let wordLength = lowerWord.length;
  let reversedWord = lowerWord;
  for (let j = 0; j < wordLength / 2; j++) {
    let temp = reversedWord[j];
    reversedWord = reversedWord.replaceAt(j, lowerWord[wordLength - 1 - j]);
    reversedWord = reversedWord.replaceAt(wordLength - 1 - j, temp);
  }
  // 按照原位置的大小写规则重置字符
  let result = '';
  for (let k = 0; k < reversedWord.length; k++) {
    result += upperCaseFlags[k] ? reversedWord[k].toUpperCase() : reversedWord[k];
  }
  return result;
}

function reverse() {
  let text = document.getElementById("text").value;
  let splittedText = text.split(" ");
  let reversedWords = [];
  for (let i = 0; i < splittedText.length; i++) {
    let word = splittedText[i];
    let reversedWord = reverseWord(word);
    reversedWords.push(reversedWord);
  }
  document.getElementById("demo").innerHTML = reversedWords.join(" ");
}

测试效果:输入Apple(原大写在首位),反转后输出Elppa,和原单词大写位置完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:36:03