JavaScript Как я могу заменить символ из строки на 2 новых символа - PullRequest
0 голосов
/ 04 марта 2020

Например, у меня есть строка «Здравствуйте, меня зовут ...», и теперь я хочу изменить строку на «Hellel, меня зовут ...». Как я должен это сделать? Я уже написал кодекс, но каждый раз, когда я хочу заменить / заменить 1 символ на 2 новых, весь «сайт» начинает загружаться вечно.

Вот мой код:

function f(str) {
        let e = document.getElementById("changeValue");
        let replaceStr = e.options[e.selectedIndex].text;
        const vokale = ['a', 'e',  'i', 'o', 'u'];
        for (let i = 0; i < str.length;i++) {
            if (vokale.includes(str.toLowerCase()[i])){
                if(vokale.includes(str.toLowerCase()[i+1])){
                    str = str.substr(0, i + 1) + '' + str.substr(i + 2, str.length);
                }
                if (replaceStr.length == 2) {
                    str = str.substr(0, i) + replaceStr.charAt(0) + str.substr(i + 1, str.length);
                    str = str.substr(0, i + 1) + replaceStr.charAt(1) + str.substr(i + 2, str.length);
                } else {
                    str = str.substr(0, i) + replaceStr + str.substr(i + 1, str.length);
                }
            }
        }
        changeText(str);
    }

str ... это строка, которую я хочу изменить - e ... это просто строка / символ, который я хочу заменить чем-то, как здесь я хочу заменить все вокалы на e.

Спасибо за вашу помощь заранее!

1 Ответ

0 голосов
/ 04 марта 2020

Можно использовать регулярное выражение с функцией замены:

let regex = '(a|e|i|o|u)'

let re = new RegExp(regex, 'g');

str = str.replace(re, replaceStr);
console.log(str)

В этом случае бесконечное l oop не происходит, и вы можете заменить вокал на 2-3 или более символов

...