Замените каждый гласный на случайные гласные и каждый согласный на случайные согласные в Javascript - PullRequest
0 голосов
/ 31 января 2020

Мне нужна функция, которая принимает строку и заменяет каждый гласный в ней случайными гласными, а каждый согласный в ней - случайными согласными и возвращает новую строку с той же заглавной буквой, что и оригинал в Javascript. Есть ли быстрый способ сделать это?

Например: если строка «John», то она может вернуть «Lavr» или «Xiqp».

Ответы [ 2 ]

1 голос
/ 31 января 2020

Это определенно возможно. Во-первых, создайте массив гласных и согласных. Создайте al oop to l oop через исходную строку, например так:

for (var i = 0; i < str.length; i++) {
  const currentChar = str.charAt(i)
}

Внутри этого l oop проверьте, является ли ваш символ верхним или нижним регистром, используя методы-прототипы строки:

currentChar.toLowerCase() === currentChar

Посмотрите, является ли ваш символ гласным или согласным:

vowels.find(currentChar)

Это приведет к -1, если элемент не найден, вы можете использовать это значение для определения типа символа.

Затем используйте JS Math, чтобы выбрать случайный символ из вашего гласного или согласного массива.

vowels[Math.floor(Math.random()*vowels.length)]

Используйте указанное выше значение для замены этого символа. Повторите эти действия для каждого символа и соедините все вместе с конкатенацией строк.

0 голосов
/ 31 января 2020

Вам понадобится полный список согласных и гласных для сравнения, поэтому сделайте переменные для обоих. Затем l oop через строку, проверяя, является ли каждая буква строчной гласной, строчной согласной, прописной гласной, прописной или чем-то еще. Если вы найдете что-то строчное, просто замените его случайным символом из соответствующей переменной гласных / согласных, используя функцию Rando js * rando(). Если вы обнаружите, что что-то написано в верхнем регистре, замените его случайным символом в верхнем регистре из соответствующей переменной, используя встроенный в JavaScript метод toUppercase(). В противном случае, если это не буква, просто добавьте ее в строку как есть.

function chaos(str) {
  var consonants = "bcdfghjklmnpqrstvwxyz";
  var vowels = "aeiou";

  var newStr = "";
  for (var i = 0; i < str.length; i++) {
    if (vowels.indexOf(str[i]) > -1) newStr += rando(vowels);
    else if (consonants.indexOf(str[i]) > -1) newStr += rando(consonants);
    else if (vowels.toUpperCase().indexOf(str[i]) > -1) newStr += rando(vowels.toUpperCase());
    else if (consonants.toUpperCase().indexOf(str[i]) > -1) newStr += rando(consonants.toUpperCase());
    else newStr += str[i];
  }
  return newStr;
}

console.log(chaos("This is CHAOS."));
<script src="https://randojs.com/1.0.0.js"></script>

Обратите внимание, что функция rando() относится к rando js .com , поэтому вам просто нужно убедиться, что это верхняя часть заголовка вашего документа html, если вы хотите использовать этот код:

<script src="https://randojs.com/1.0.0.js"></script>

Это просто упрощает случайность и делает ее более читаемой.

Примечание : В следующий раз, пожалуйста, не забудьте опубликовать код, который вы уже пробовали, вместо того, чтобы просто задать вопрос. Этот сайт здесь, чтобы помочь, когда вы врезаетесь в стену, но вы не можете врезаться в стену, если ничего не написали.

...