function replaceString(initString, strToReplace, replacer) {
let result = initString;
let i = 0;
let len = strToReplace.length;
while (len) {
i = result.indexOf(strToReplace, i);
if (i == -1) {
break;
}
result = result.substring(0, i) + replacer + result.substring(i + len);
i += len;
}
return result;
}
let newStr = replaceString("Я не люблю JavaScript", "не люблю", "люблю");
console.log(newStr)
Подскажите как улучшить эту функцию
Почему бы не воспользоваться стандартной функцией replace
?
function replaceString(initString, strToReplace, replacer) {
return initString.replace(strToReplace, replacer);
}
let newStr = replaceString("Я не люблю JavaScript", "не люблю", "люблю");
console.log(newStr)
Или если нужно заменить все "не люблю":
function replaceString(initString, strToReplace, replacer) {
return initString.replace(new RegExp(strToReplace, 'g'), replacer);
}
let newStr = replaceString("Я не люблю JavaScript", "не люблю", "люблю");
console.log(newStr)
Не совсем ясны цели и ограничения на собственную реализацию replace. Можно как один из вариантов рассмотреть вариант в котором сначала использовать функцию split, которая разделит строку, используя в качестве разделителя strToReplace. В результате получится массив в каждой ячейке которого будут последовательно лежать части строки без strToReplace:
console.log("Я не люблю JavaScript и не люблю Василия".split("не люблю"));
Получится так:
function replaceString(initString, strToReplace, replacer) {
return initString.split(strToReplace).join(replacer);
}
console.log(replaceString("Я не люблю JavaScript и не люблю Василия", "не люблю", "люблю"));
Ну а что касается вашей реализации, то можно только косметически:
сделать len константой, потому что она никогда не изменяется
const len = strToReplace.length;
и сделать условие выполнения бесконечного цикла нормальным true
while (true) {
Ответ уже есть один, предложу свой вариант на основе идеи автора:
function replaceString(initString, strToReplace, replacer) {
let result = initString;
let i = 0;
while ((i = result.indexOf(strToReplace, i)) != -1) {
result = result.substring(0, i) + replacer
+ result.substring(i + strToReplace.length, result.length);
}
return result;
}
console.log(replaceString('Я не люблю JavaScript', 'не люблю', 'люблю'));
console.log(replaceString('Тут нет таких слов', 'привет', 'пока'));
console.log(replaceString('Я люблю яблоки и яблоки', 'яблоки', 'девочек'));
Виртуальный выделенный сервер (VDS) становится отличным выбором
После нажатия кнопки "поделится, на g+" при создании поста внизу (там где ссылка ), вместо тайтла отображает иероглифыС остальными кнопками...
Могу ли я с помощью валидации в контроллере задать максимальное значение числа? Тк