2013-10-29 83 views
1

我有這樣"12,a,{3,4},b,c"一個字符串,我需要將其轉換成一個陣列,其中在大括號中的元素應該是一個子陣列,其結果應該是這樣的更換喜歡串用字符數組陣列替換

["12","a",[3,4],"b","c"] 

對於其他例如:

"12,a,b,c,{e,f}" --> ["12","a","b","c", ["e","f"]]

"{12,a},b,c,{c,d}" --> [["12","a"],"b","c", ["e","f"]]

+0

會像這樣的數組是可以接受的? '[[「12」],[「a」],[「3」,「4」],[「b」],[「c」]]'這可以表示爲鋸齒狀的字符串數組。 –

+0

是應該但最後 – Sarath

+0

你在做什麼? –

回答

1

你可以試試這個代碼:

a = "{12,a},b,c,{c,d}"; 
m = a.match(/{[^}]*}|[^,]+/g); 
arr=[]; 

for (i=0; i<m.length; i++) { 
    if (m[i].indexOf('{') >= 0) 
     arr.push(m[i].replace(/[{}]/g, "").split(/,/)); 
    else 
    arr.push(m[i]); 
} 
console.log(arr); 

OUTPUT:

[[12,a],b,c,[c,d]] 
0
var a = "12,a,{3,4},b,c,{2,3}"; 
var b = eval(("[" + a.replace(/{/g, '[').replace(/}/g, ']') + "]").replace(/[a-zA-Z]/g, function (all, match) { return "'" + all+ "'";})); 
console.log(b) 

試試這個

+0

b是字符串,我想b作爲數組 – Sarath

+0

檢查我的新編輯 –

+0

a =「12,'a',{3,4},'b','c',{2,3}」;是不可能的其「12,a,{3,4},b,c,{2,3}」 – Sarath

0

你可以試試這個。

var m = "{12,a},b,c,{c,d}".split(','), 

result = m.reduce(function(a, b) { 

    if (b.indexOf('{') !== -1 || a.t.length){ 
     a.t.push(b.replace(/\{|\}/,'')); 
    } else { 
     a.array.push(b); 
    } 

    if (b.indexOf('}') !== -1){ 
     a.array.push(a.t); 
     a.t = []; 
    } 
    return a ; 

}, { array:[],t:[]}).array; 

console.log(result);