JavaScript实现字符串每隔一位切换大小写的代码运行失败,如何解决?
问题原因
- JavaScript 中的字符串属于不可变原始值,你无法通过索引直接修改某一位的字符,
text[i] = 新值的操作是无效的,不会改变原字符串内容,因此你的函数最终返回的仍然是未修改的入参字符串。
修正方案
你可以先把字符串转为可修改的数组,处理完成后再拼接回字符串返回,修正后的代码如下:
function switchCase(text) { // 字符串转数组 const charArr = text.split(''); for (let i = 0; i < charArr.length; i++) { if (i % 2 !== 0) { if (charArr[i] === charArr[i].toLowerCase()) { charArr[i] = charArr[i].toUpperCase(); } else { charArr[i] = charArr[i].toLowerCase(); } } } // 数组拼接回字符串返回 return charArr.join(''); }
测试结果完全匹配示例要求:
- 输入
'HelloWorld',输出'HElLowoRlD' - 输入
'abcdefg',输出'aBcDeFg' - 输入
'TONYmontana',输出'ToNymOnTaNa'
内容的提问来源于stack exchange,提问作者Natalia Grzywacz
相关产品推荐
相关产品推荐

