Для этого вы можете использовать глобальное регулярное выражение (регулярное выражение). Регулярное выражение находится между / /
, за которым следует флаг g, чтобы сделать его глобальным (в противном случае он возвращает только первый найденный результат и останавливается). В регулярном выражении |
является оператором ИЛИ, поэтому вы подходите для /{|}|[|]/
Поскольку [
и ]
имеют особое значение в регулярных выражениях, вам нужно экранировать те, которые используют \
, поэтому ваше общее регулярное выражение становится /{|}|\[|\]/g
. Это возвращает массив совпадений, я назвал функцию findBrackets
. Чтобы получить количество скобок, функция countBrackets
просто возвращает .length
этого массива.
const findBrackets = str => str.match(/{|}|\[|\]/g);
const countBrackets = str => findBrackets(str) ? findBrackets(str).length : 0;
console.log(findBrackets('qw[e}rt[y]ui{}o{p'));
console.log(countBrackets('qw[e}rt[y]ui{}o{p'));
console.log(countBrackets('no brackets here'));
Редактировать: увидев код, который вы разместили, вы решили использовать цикл for, чтобы зациклить вашу строку, что является полностью допустимым решением. Обратите внимание, что в моем приведенном выше примере const findBrackets = str => str.match(/{|}|\[|\]/g);
в основном такой же, но более новый способ написания функций (с несколькими нюансами), я мог бы написать:
var findBrackets = function(str) {
return str.match(/{|}|\[|\]/g);
}
вместо этого, который будет почти таким же.
Если вы хотите зациклить строку, вы можете получить доступ к букве в строке, используя обозначение в квадратных скобках, например,
const testString = 'hello';
console.log(testString[1]);
Выведет букву 'e'.
Итак, чтобы использовать это в функции:
const countBrackets = (str) => {
let counter = 0;
for (let i = 0; i < str.length; i++) {
if (str[i] === '[' || str[i] === ']' || str[i] === '{' || str[i] === '}') {
counter++;
}
}
return counter;
}
console.log(countBrackets('qw[e}rt[y]ui{}o{p'));
Здесь вы перебираете строку от 0 до <длина строки и проверяете каждую букву, проверяя, является ли str [i] {,}, [или], и если это так, вы увеличиваете счетчик. После этого вы возвращаете окончательный счет. </p>