javascript - 计算字符串中的括号
问题描述
一直在研究学校的问题,一直没能弄明白。任何帮助表示赞赏!
编写一个名为 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 运算符,因此您匹配/{|}|[|]/
自[
,并且]
在正则表达式中具有特殊含义,您需要使用 a 转义那些,\
因此您的总正则表达式变为/{|}|\[|\]/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] 是否为 {、}、[ 或 ],如果是,则增加一个计数器。完成后,您将返回最终计数。
推荐阅读
- python - 如何在 numpy 数组中查找特定值?
- github - 有没有办法查看 GitHub 事件?
- jms - 同一会话/主题上的 qpid 生产者和消费者?
- flutter - 如何在颤动的屏幕开始处添加动画显示
- c# - .NET Core 3 API 模型将复杂类型与 Angular 10 绑定
- reason - 如何在 ReScript 中将动态值设置为 Js.t 键?
- python - Flask-RESTPlus:如何在嵌套 API 模型中获取查询 sqlite 数据库的结果?
- git - 意外删除bin文件夹后恢复Gitlab
- php - php - 通过关键条件创建新数组并用另一个数组值填充
- android - 我有签名 Apk 和捆绑包,但签名 apk 的大小变小了,然后签名包