字符串中的方括号

问题描述 投票:-1回答:1

一直在处理学校问题,但无法弄清楚。任何帮助表示赞赏!

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

    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

我对应该如何计算它来猜测一个字符串感到有些困惑。

javascript string counting
1个回答
1
投票

您可以为此使用全局正则表达式(正则表达式)匹配。正则表达式介于/ /和g标志之间,以使其变为全局(否则,它仅返回找到并停止的第一个结果)。在正则表达式中,|是OR运算符,因此您匹配/{|}|[|]/由于[]在正则表达式中具有特殊含义,因此您需要对使用\的那些进行转义,因此您的总正则表达式将变为/{|}|\[|\]/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到

© www.soinside.com 2019 - 2024. All rights reserved.