首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除字符串中的方括号,包括括号内的文本

删除字符串中的方括号,包括括号内的文本
EN

Stack Overflow用户
提问于 2020-12-04 02:16:30
回答 1查看 151关注 0票数 0

我正在尝试删除字符串中的所有方括号,包括开头和结尾括号中的文本。它不应该删除未关闭的文本。

Hell d!!

  • Example2:

  • Example1:Hell[o] [W[orl]d[!!应该是Hell d

Hell[]o] [W[orl]d[!!]应该是

下面是我的代码,看起来很有效:(编辑:在某些情况下它不起作用,请参见下面)

代码语言:javascript
运行
复制
let text = "Hell[o] [W[orl]d[!!";
let newText = "";
let buf = "";
let isOpened = false;
for (let i = 0; i < text.length; i++) {
  const char = text.charAt(i);
  if (char === "[") {
    isOpened = true;
  }
  else if (char === "]") {
    buf = "";
    isOpened = false;
  }
  else {
    if (isOpened) {
      buf += char;
    }
    else {
      newText += char;
    }
  }
}
newText += buf;

console.log(newText);

结果:Hell d!!

我想问一下,是否有一个比这更简单的解决方案。

理想情况下,为了获得更好的性能,我希望避免将整个text复制到newText

编辑:我刚刚发现我的代码在"Hell[]o] [World[!!]“中不能正常工作。它返回Hello d!!,但应该是Hell d!!。我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-04 02:47:49

您可以使用regex来完成这一任务。regex /(?:\[.*?\]|[\[\]])/g将工作(通过搜索包含文本和未配对括号的两个配对括号)

代码语言:javascript
运行
复制
function stripBrackets(text) {
  return text.replace(/(?:\[.*?\]|[\[\]])/g, "")
}
console.log(stripBrackets("Hell[o] [W[orl]d[!!"));
console.log(stripBrackets("Hell[]o] [W[orl]d[!!]"));

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65136966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档