Это плохая идея считать конкретные буквы в строке с помощью регулярных выражений? - PullRequest
0 голосов
/ 13 января 2019

Я ищу буквы (от a до m) в строке с помощью регулярных выражений. Я уже нашел способ сделать то же самое без регулярных выражений, но возможно ли это сделать с помощью регулярных выражений и является ли хорошей или плохой идеей использовать регулярные выражения при подсчете определенных букв в строке?

При использовании regex значение findError.length мне не подходит, другой способ работает нормально

Так я ищу буквы с помощью регулярных выражений

function printerError(s) {
            let findError = s.match(/[a-mA-M]+/g).toString();
            let sum = (s.length - findError.length);
            return sum + '/' + s.length;
        }

    console.log(printerError("anananaanaann"));

** Рабочий код

    function printerError2(s) {
      const goodLetters = Array.from("abcdefghijklm");
      let total = s.length;
      let badLetters = 0;
      for (let i = 0; i < total; i++) {
        if ( !goodLetters.includes(s.charAt(i)) ) {
          badLetters++;
        }
      }
      return `${badLetters}/${total}`;
    }

console.log(printerError2("anananaanaann"));

1 Ответ

0 голосов
/ 13 января 2019

Возвращает количество символов между a-mA-M в вашей строке:

function printerError(s) {
  return s.length - s.replace(/[a-mA-M]/g, '').length;
}

console.log(printerError("anananaanaann"));

Или вы можете даже сделать:

function printerError(s) {
  return (s.match(/[a-mA-M]/g) || []).length;
}

console.log(printerError("anananaanaann"));
...