Javascript - разделить динамическую строку, получая значения в скобках - PullRequest
1 голос
/ 05 сентября 2010

У меня это как ввод данных (он динамический, поэтому в одной строке может быть от 1 до 5 скобок)

data["optionBase"] = {} //declaration
data["optionBase"]["option"] = {} //declaration
data["optionBase"]["option"][value] = {} //declaration
data["optionBase"]["option"][value]["detail"] = somethingHere

Каждая строка представлена ​​строкой, а не массивом или каким-либо другим типомобъекта JavaScript.Как я могу получить массив из этой строки, содержащий что-то вроде этого:

Строка 1:

result[0] = "optionBase"

Строка 2:

result[0] = "optionBase"
result[1] = "option"

Строка 3:

result[0] = "optionBase"
result[1] = "option"
result[2] = value

Строка 4:

result[0] = "optionBase"
result[1] = "option"
result[2] = value
result[3] = "detail"

1 Ответ

1 голос
/ 05 сентября 2010
var s1 = 'data["optionBase"] = {} //declaration';
var s2 = 'data["optionBase"]["option"] = {} //declaration';
var s3 = 'data["optionBase"]["option"][value] = {} //declaration';
var s4 = 'data["optionBase"]["option"][value]["detail"] = somethingHere';
var a = [s1, s2, s3, s4];
var regex = /data\[([^\]]+)\](?:\[([^\]]+)\])?(?:\[([^\]]+)\])?(?:\[([^\]]+)\])?/;
for(var i = 0; i < 4; i++)
{
  var result = a[i].match(regex);
  //result[0] contains the whole matched string
  for(var j = 0; j < 5; j++)
    console.log(result[j]);
}

Если вы хотите сделать его динамичным, вы можете извлечь строку и разбить ее на ][

var s = 'data["optionBase"]["option"][value]["detail"] = somethingHere';
var m = s.match(/data((?:\[[^\]]+\])+)/);
var substr = m[1].substring(1, m[1].length - 1);
var array = substr.split("][");
console.log(array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...