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
相关产品推荐
相关产品推荐

