首页 > 解决方案 > 如何在Javascript中使用双方括号拆分()字符串

问题描述

我想改变这个

let str = "Tom left from [[his]] home";

array = ["Tom left from ", "[[his]]", " home"];

我试过这样

array = []; c = 0;
array = str.split(/([[[]]])/).filter(Boolean).forEach(e => 
e == '[[' ? c++ : e == ']]' ? c-- : c > 0 ? array.push('[[' + e + ']]') : array.push(e) 
); 

console.log(array)

标签: javascript

解决方案


试试这个

str.split(/(\[\[.+?\]\])/).filter(Boolean)

就是这样,不需要额外的执行

PS关于您的代码:

1) 正则表达式中的方括号需要在它们前面加上反斜杠,因为它们是表达式语法的一部分

2)forEach 只是迭代元素,它返回未定义,所以当你为数组赋值时你的代码完全没有意义,所以无论你用变量数组做什么,你都会被消灭,在这种情况下使用 map 函数,它创建一个新数组,转换现有的价值

array = str.split(/whatever/).filter(Boolean).map(e => 
e == '[[' ? c++ : e == ']]' ? c-- : c > 0 ? '[[' + e + ']]' : e 
); 

推荐阅读