JavaScript使用for循环替换字符串字符出现多余字符问题求解
JavaScript字符替换程序异常问题解答
问题根因
你代码的核心问题是条件分支没有设置互斥逻辑,两个独立if判断导致字符i被重复追加:
当遍历到值为i的字符时:
- 第一个
if(str1[i] == "i")条件成立,向str2追加了替换后的1 - 程序继续执行第二个独立
if判断str1[i] == "e",i显然不等于e,触发else分支,再次把原始字符i追加到str2
最终每个i对应输出1i,就是你看到的额外多出i的效果。
修复方案
方案1:修改循环的条件分支为互斥结构
把独立if改为if-else if-else的互斥判断,保证每个字符只会命中一个分支:
var str1 = "Optimism is the key to victory" var str2 = "" for(let i=0; i<str1.length;i++){ if(str1[i] == "i"){ str2 += "1" } else if(str1[i] == "e"){ str2 += "3" } else { str2 += str1[i] } } console.log(str2) // 预期输出:Opt1m1sm 1s th3 k3y to v1ctory
方案2:使用内置方法实现(更简洁)
直接调用JS字符串的replaceAll方法完成批量替换,不需要手动写循环:
const str1 = "Optimism is the key to victory" const str2 = str1.replaceAll('i', '1').replaceAll('e', '3') console.log(str2)
内容的提问来源于stack exchange,提问作者Aaron Joseph Mijares
相关产品推荐
相关产品推荐

