Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема в строке с методом replace() (https://javascript.ru/forum/misc/84780-problema-v-stroke-s-metodom-replace.html)

Spily 17.12.2022 21:20

Проблема в строке с методом replace()
 
Добрый день! Подскажите пожалуйста, как решить данную проблему.
Есть функция, которая берёт строку и изменяет регистр каждой буквы. (Например: Gap, gAp, gaP) И потом возвращает массив этих строк. Проблема в том, что replace() оказывается заменяет только первое совпадение. Из-за этого например, вызов ф-ции со строкой 'Hello' возвращает неправильный массив. Потому что каждый раз меняется только первая буква " l ". Скажите пожалуйста, как можно исправить это.

function wave(str) {
    let symbol, slice, waveArray = [];
    waveArray.push(str);
    for (let i = 1; i < str.length; i++) {
        str = str.toLowerCase();
        symbol = str.charAt(i);
        slice = str.slice(i, (i + 1)).toUpperCase();
        str = str.replace(symbol, slice);
        waveArray.push(str);
    }
    return waveArray;
}
console.log(wave('Hello'));

рони 17.12.2022 21:48

Spily,
function wave(str) {
    let symbol, waveArray = [], length = str.length;
    waveArray.push(str);
    str = str.toLowerCase();
    for (let i = 1; i < length; ) {
        symbol = str[i].toUpperCase();
        waveArray.push(str.slice(0, i) + symbol + str.slice(++i));
    }
    return waveArray;
}
console.log(wave('Hello'));
console.log(wave('Gap'));

Spily 18.12.2022 21:03

рони,
Спасибо Вам большое! Благодаря вам понял как это реализовать.


Часовой пояс GMT +3, время: 02:01.