计算字符串中的括号

Counting brackets in a string

一直在处理一个学校问题,但一直没能弄明白。感谢您的帮助!

编写一个接受字符串的名为 countBrackets 的函数 和 returns 方括号和大括号的数量 字符串中的字符。也就是说,它应该计算出现的次数 这四个字符“{}[]”。使用函数表达式语法。

    var countBrackets = function(s){
    let sum = 0

    for(let i = ""; i == s ; i++ )
    if(i ==="{}[]"){
        sum+=i
    }
     return sum}

 console.log(countBrackets("[123],{456},[{}]")) //8
 console.log(countBrackets("Test string")) // 0

我对如何让它计算我猜的字符串有点困惑。

你可以使用一个全局正则表达式(regular expression)来匹配这个。正则表达式位于 / / 之间,后跟 g 标志以使其成为全局(否则它仅 return 是它找到并停止的第一个结果)。 在正则表达式中,| 是 OR 运算符,因此您匹配 /{|}|[|]/ 由于 [] 在正则表达式中具有特殊含义,因此您需要使用 \ 对它们进行转义,以便您的总正则表达式变为 /{|}|\[|\]/g。 这个 return 是一个匹配数组,我调用函数 findBrackets。 要获得括号的数量,函数 countBrackets 只是 return 那个数组的 .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] 是否是 {, }, [ 或 ],如果是你递增一个计数器.完成后,您 return 最后计数。