Я хочу найти вхождения гласных в Javascript с помощью оператора Switch - PullRequest
2 голосов
/ 13 июля 2020

Я хочу написать функцию с оператором switch для подсчета количества вхождений любых двух гласных подряд в строку текста. Например, в предложении

Например:

Исходная строка = «Pl ea ses r ea d this application and give me grat ui ty ».

Такие вхождения в строку ea, ea, ui.

Вывод: 3

function findOccurrences() {
    var str = "Pleases read this application and give me gratuity";
    var count = 0;

    switch (str) {
        case 'a':
            count++;
        case 'A':
            count++
        case 'e':
        case 'E':
        case 'i':
        case 'I':
        case 'o':
        case 'O':
        case 'u':
        case 'U':
            return 1;
        default:
            return 0;
    }
}

findOccurrences();

Ответы [ 2 ]

4 голосов
/ 13 июля 2020

Вы можете использовать regex , чтобы найти количество вхождений.

Исходная строка: Pl ea ses r ea d this application io n и дайте мне grat ui ty

Встречи: ea , ea , io, ui

Результат: 4

Regex:

  • [aeiou] означает любой из этих символов.
  • {2} ровно 2 из них (измените на {2,}, если вы хотите сопоставить 2 или более символов в строке)
  • g не останавливаться после первого совпадения (измените на gi, если хотите чтобы сделать регистр нечувствительным)

function findOccurrences() {
  var str = "Pleases read this application and give me gratuity";
  var res = str.match(/[aeiou]{2}/g);
  return res ? res.length : 0;
}

var found = findOccurrences();

console.log(found);

EDIT: с выражением switch

function findOccurrences() {
  var str = "Pleases read this application and give me gratuity";
  var chars = str.toLowerCase().split("");
  var count = 0;
  
  // Loop over every character
  for(let i = 0; i < chars.length - 1; i++) {
    var char = chars[i];
    var next = chars[i + 1];
    
    // Increase count if both characters are any of the following: aeiou
    if(isCorrectCharacter(char) && isCorrectCharacter(next)) {
      count++
    }
  }
  
  return count;
}

// Check if a character is any of the following: aeiou
function isCorrectCharacter(char) {
  switch (char) {
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
      return true;
    default:
      return false;
  }
}

var found = findOccurrences();

console.log(found);
3 голосов
/ 13 июля 2020

Если вы настаиваете на использовании переключателя, вам также понадобится al oop и флаг, чтобы отметить, если вы уже видели гласную.

function findOccurrences() {
  var str = "Pleases read this application and give me gratuity";
  var count = 0;
  let haveSeenVowel = false;

  for (const letter of str.toLowerCase()) {
    switch (letter) {
      case 'a':
      case 'e':
      case 'i':
      case 'o':
      case 'u':
        {
          if (haveSeenVowel) {
            count++;
            haveSeenVowel = false;
          } else {
            haveSeenVowel = true;
          }
          break;
        }
      default:
        haveSeenVowel = false
    }
  }

  return count
}

console.log(findOccurrences());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...