【发布时间】:2020-12-04 02:16:30
【问题描述】:
我正在尝试从字符串中删除所有方括号,包括左括号和右括号内的文本。它不应该删除未关闭的文本。
- 示例 1:
Hell[o] [W[orl]d[!!应该是Hell d!! - 示例 2:
Hell[]o] [W[orl]d[!!]应该是Hell d
这是我的代码似乎有效:(编辑:在某些情况下它不起作用,见下文)
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] [W[orl]d[!!”一起正常工作。它返回Hello d!!,但它应该是Hell d!!。我该如何解决这个问题?
【问题讨论】:
-
查看一系列示例输入/输出会很有帮助。顺便说一句,这看起来像是正则表达式的理想场景!
-
我认为
Hell[]o] [W[orl]d[!!返回Hello d!!是预期行为 -o没有完全包裹在括号中。
标签: javascript regex string