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

时间:2013-11-29 09:32:16

标签: javascript jquery regex arrays string

我有一个字符串,我想创建一个甚至出现“[]”

的数组
"Match[0][a][5][b][0][d][2]"

我想拆分它们并根据“[]”的实例使用这个字符串创建一个数组。数组的每个元素必须出现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);

3 个答案:

答案 0 :(得分:1)

您可以使用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();

答案 1 :(得分:1)

您可以获取数组中的各个部分,然后操作结果,直到它具有您想要的形式。一个例子可能是这个:

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']"] 

答案 2 :(得分:1)

哇它的乐趣:) ...尝试api,看看大家是如何解决它的。 This is what i tried看看这是否有用。

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)