Как я могу заменить БОЛЬШЕ символов в определенном индексе в JS? - PullRequest
0 голосов
/ 23 июня 2019

Я знаю, как заменить один символ в определенном индексе, но я не знаю, как я могу заменить больше символов.

Я уже пробовал цикл FOR, но он не работал.

String.prototype.replaceAt=function(index, replacement) {
    return this.substr(0, index) + replacement+ this.substr(index + replacement.length);
}

var str = "hello world";
var indices = [1, 4, 9];

for(i = 0; i < indices.length; i++) {
    str.replaceAt(indices[i], "?");
}

Цикл str после должен быть "h?ll? wor?d", но это "hello world"

Ответы [ 2 ]

2 голосов
/ 23 июня 2019

Если вы посмотрите на ваш метод replaceAt, вы не изменили переданную строку (что было бы невозможно, поскольку строки неизменны), вы создадите новую, поэтому, если вы измените цикл for для замены строки, он будет работа:

String.prototype.replaceAt=function(index,replacement) {
    return this.substr(0, index) + replacement+ this.substr(index + replacement.length);
}

var str = "hello world";
var indices = [1, 4, 9];

for(i = 0; i < indices.length; i++) {
    str = str.replaceAt(indices[i], "?");
}
1 голос
/ 23 июня 2019

Вам нужно назначение для каждого шага замены.

String.prototype.replaceAt = function(index, replacement) {
    return this.substr(0, index) + replacement + this.substr(index + replacement.length);
}

var str = "hello world";
var indices = [1, 4, 9];

for (var i = 0; i < indices.length; i++) {
    str = str.replaceAt(indices[i], "?");
}

console.log(str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...