Показать сообщение отдельно
  #7 (permalink)  
Старый 22.11.2011, 02:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

Сделал функцию, но имхо вышло как-то криво, сейчас спать, а завтра трезво взгляну.)
function parce(str){
  var result=[],
  i=0,
  re=/([^\[;]+)\[([^\]\[]+)\]/g,
  placer = function(a,b,c){
    var arr=c.split(';'), j=arr.length;
    while(j--)if(arr[j].indexOf('array_')===0)arr[j]=result[arr[j].slice(6)];
    arr.toString=function(){return b};
    result[i]=arr;
    return 'array_' + i++
  }
  while(~str.indexOf('['))str=str.replace(re,placer)
  return result[i-1]
}
var str = "ЭНИ-601[2к[10Вт[вложенность+3[вложенность+4;xxx;zzz];xxx;zzz];20Вт];4к[10Вт;20Вт;30Вт];8к[70Вт;80Вт]];"

arr=parce(str)

alert(
arr+'\n'+
arr[0]+'\n'+
arr[0][0]+'\n'+
arr[0][0][0]+'\n'+
arr[0][0][0][0]
)
__________________
29375, 35
Ответить с цитированием