我试图编写一个函数,将括号中包含的单词提取到自己的数组中,递归地解释嵌套圆括号。递归提取字符串中嵌套括号的内容
所以对于“((AB)啊(一二))PI”,我想,要翻译成以下结构:
[
[
[
"a",
"b"
],
"ugh",
[
"1",
"2"
],
]
"pi"
]
为此,我写了下面的函数:
function shitshow(hell) {
var ssparts = [];
var done = false;
for (i in hell) {
let part = hell[i];
switch(part) {
case "(":
ssparts.push(shitshow(hell.slice(i+1)));
break;
case ")":
done = true;
break;
default:
ssparts.push(part);
}
if (done) break;
}
return ssparts;
}
console.log(shitshow("((developer or engineer) or (nurse or doctor)) and manager"));
它不起作用。它返回我的阵列(我在节点4测试这个):
[
"",
[
"doctor"
],
[],
"developer",
"or",
"engineer"
]
被这个搏斗了一会儿。有任何想法吗?
编辑:由于@Oriol在这篇文章的评论下文提到的,我贴的代码不产生我贴的输出。这是因为我忘记提及/包括将RegEx的初始字符串转换为单词和非字母数字符号的数组。为此事道歉。由于@Oriol已经发布了一个工作解决方案,因此我将此通知包含在内,而不是更新我的代码,以便他的发布解决方案能够成功。
爱那些函数名 – Derek
没有办法,你的代码产生的输出。您正在向数组推送单个字符。 – Oriol
@Oriol好的一点,我忘了补充说我使用RegEx将字符串拆分为一个单词数组并且没有字母符号。只要我再次在我的笔记本电脑上就会更新。 – dylan