基于分隔符/方括号的实例创建数组

Create array based on instance of delimiter/square-brackets

本文关键字:实例 创建 数组 方括号 分隔符      更新时间:2024-01-03

我有一个字符串,我想创建一个偶数出现"[]"的数组

"Match[0][a][5][b][0][d][2]"

我想将它们拆分,并在"[]"的实例的基础上使用此字符串创建一个数组。数组中的每个元素必须有两个"[]"出现,下一个元素必须有另外两个"[]"出现。换句话说,我想创建一个数组,甚至出现"[]"

我想用字符串做一个数组,比如:

["Match[0]['a']", "Match[0]['a'][5]['b']", "Match[0]['a'][5]['b'][0]['d']"]

使用javascript/jQuery

我试过这场比赛,但我只打到现在。

// ['part1.abc', 'part2.abc', 'part3.abc', 'part4']
'part1.abc.part2.abc.part3.abc.part4'.match(/[^.]+('.[^.]+)?/g);

您可以获取数组中的各个片段,然后处理结果,直到它具有您想要的形式。例如:

var str = "Match[0][a][5][b][0][d][2]";
var result = [];
str.split(/[']'[]{1,2}/).slice(0,-1).reduce(function(acc,item, index) {        
  acc += '[' + (isNaN(item) ? "'" + item + "'" : item) + ']';
  if (index %2 === 0 && index !== 0) {
    result.push(acc);
  }
  return acc;
});
console.log(result) // ["Match[0]['a']", "Match[0]['a'][5]['b']", "Match[0]['a'][5]['b'][0]['d']"] 

您可以使用match(/'[.']/g)获得每个括号,然后通过二乘二的方式组合数组。

var matches = "Match[0][a][5][b][0][d][2]".match(/'[(.)']/g);
var result = [];
for (var i = 0; i < matches.length; i += 2) {
    var brackets = '';
    for(var j = 0; j< i; j++) {
        brackets += matches[j];
    }
    result.push("Match" + brackets);
}
result.shift();

哇,太有趣了:)。。。尝试api,看看每个人是如何解决它的。这就是我尝试的,看看这是否有帮助。

str = "STR[1][3][4d][re]"
var re=/'['w+']/g;
var mat = str.match(re);
var ar = [];
for(i=2; i<= mat.length; i=i+2){
ar[ar.length] = "STR" + mat.slice(0,i).join("")
}
console.dir(ar)