@nataleya2010

Как удалить гласные в строке?

Пытаюсь удалить все гласные из полученной строки с помощью метода replace, но что-то не выходит.

function disemvowel(str) {
    let аrrVowels =['a', 'e', 'i', 'o', 'u'];
    for(let n =0; n<аrrVowels.length; n++){
        str =str.replace(/аrrVowels[n]/gi, '');
    }
    return str;
  }
  let str = "asdfsdfsadfsadf lkjasdfasdaa asdf";
  console.log(disemvowel(str));
  • Вопрос задан
  • 366 просмотров
Решения вопроса 4
otdameskapizm
@otdameskapizm
Помог ответ? Отметь решением...
Пропиши вот так: str =str.replace(/[aeiou]/gi, '');
Ответ написан
AgentSmith72
@AgentSmith72
JS - это моё хобби
Мастер регулярных выражений вам в помощь.

Цикл не нужен. Можно и динамически создавать объект регулярного выражения из переменных:

let replace = '[aeuio]';
let regExp = new RegExp(replace, "gi");
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Под капотом движок регулярок довольно большой и «тяжёлый». В этой задаче можно обойтись массивами и их эффективными методами.

Разбить начальную строку на массив букв, отфильтровать его, сохранив только не-гласные, склеить:
function disemvowel(str) {
  const vowels = ['a', 'e', 'i', 'o', 'u'];
  return str
    .split('')
    .filter(char => !vowels.includes(char))
    .join('');
}

console.log(disemvowel('Twinkle, twinkle, little star, How I wonder what you are.'));
// Twnkl, twnkl, lttl str, Hw I wndr wht y r.
Ответ написан
@WAR_VIK
Можно вообще не разбивать строку на массив и потом склеивать его, а решить старым добрым циклом:
let print = s => console.log(s);
function remove_vowels(s) {
     let res = '';
     for(let i of s) {
         if(i != 'a' && i != 'e' && i != 'i' && i != 'o' && i != 'u') res += i;
     }
     return res;
}
let str = 'Twinkle, twinkle, little star';
print(remove_vowels(str));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы