一直在处理学校问题,但无法弄清楚。任何帮助表示赞赏!
编写一个名为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
我对应该如何计算它来猜测一个字符串感到有些困惑。
您可以为此使用全局正则表达式(正则表达式)匹配。正则表达式介于/ /
和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到