计算字符串中的括号
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 最后计数。
一直在处理一个学校问题,但一直没能弄明白。感谢您的帮助!
编写一个接受字符串的名为 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 最后计数。