javascript - JavaScript 用 for 循环替换字符
问题描述
这是一个使用 for 循环和 if 语句将字符串的字符替换为另一个字符串的简单程序。但是,我没有得到想要的结果。这是代码:
var str1 = "Optimism is the key to victory"
var str2 = ""
for(let i=0; i<str1.length;i++){
if(str1[i] == "i"){
var temp = str1[i]
temp = "1"
str2 += temp
}
if(str1[i] == "e"){
var temp2 = str1[i]
temp2 = "3"
str2 += temp2
}
else{
str2 += str1[i]
}
}
console.log(str2)
结果是这样的:“Opt1im1ism 1is th3 k3y to v1ictory” 为什么它会在 '1' 之后添加另一个 'i' 以及如何删除它?(感谢您提前回复!)
解决方案
你有
if (...) {
...
}
if (...) {
...
}
else {
...
}
第一个if
不与后面的两个块链接 - 只要满足第一个条件,其他条件之一也必然会满足,导致在str2
一次迭代中连接到两次而不是一次。
使用else
/if
代替。
var str1 = "Optimism is the key to victory"
var str2 = ""
for (let i = 0; i < str1.length; i++) {
if (str1[i] == "i") {
var temp = str1[i]
temp = "1"
str2 += temp
} else if (str1[i] == "e") {
var temp2 = str1[i]
temp2 = "3"
str2 += temp2
} else {
str2 += str1[i]
}
}
console.log(str2)
更优雅:
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)
或者放弃这些指标,它们并没有太大帮助:
var str1 = "Optimism is the key to victory"
var str2 = ""
for (const char of str1) {
if (char == "i") {
str2 += "1"
} else if (char == "e") {
str2 += "3"
} else {
str2 += char
}
}
console.log(str2)
甚至
const str1 = "Optimism is the key to victory"
const str2 = str1.replace(/[ie]/g, char => char === 'i' ? '1' : '3');
console.log(str2)
推荐阅读
- ios - 找到正确的方法来增加用户脚上的鞋子
- php - 在 Laravel 的命名空间之前添加 Facades,它是如何工作的?
- linux - 无法在 Linux(Ubuntu)上使用 glew.h
- graphql - GraphQL - 联合类型给出错误 no class could be found for that type name
- reactjs - Production Cookie 出现在 Development and Staging 中
- c# - 创建包含 .cshtml 文件的 Visual Studio 自定义模板并打包到 Nuget 包中
- c++ - 在 VSCode 中编写的库要求是什么以及如何通过 browse.path 和设置“同步”我的目录
- typescript - Highstock / Angular-cli : TypeError: this.getChartData is not a function at I.afterSetExtreme
- javascript - PHP 标记内的内联 JavaScript 函数
- javascript - 如何用锚点击上的另一个部分替换页面上的一个部分?