如何用JavaScript实现移除字符串中所有括号间内容的功能?
实现方案
核心思路
你已经完成了括号数量匹配的前置校验,后续只需要通过一个层级计数器标记当前字符是否处于括号内部即可:
- 遇到左括号
(时层级+1,说明后续字符进入括号范围内 - 遇到右括号
)时层级-1,说明当前括号范围闭合 - 仅当层级为0时,当前字符不属于任何括号包裹范围,才追加到结果字符串中
完整实现代码
function removeContent(str) { let leftP = 0, rightP = 0; // 括号数量匹配校验 for( let i = 0; i < str.length; i++) { if(str[i] === '(' ) leftP++; if(str[i] === ')' ) rightP++; } if( leftP !== rightP) return ""; let depth = 0; let result = ''; for (let i = 0; i < str.length; i++) { const char = str[i]; if (char === '(') { depth++; continue; } if (char === ')') { depth--; continue; } // 层级为0时说明不在括号内,保留字符 if (depth === 0) { result += char; } } return result; } console.log(removeContent('12(3(45))67(8)9')); // 输出 12679
内容的提问来源于stack exchange,提问作者Leo Messi
相关产品推荐
相关产品推荐

